<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621680808621"></span><span class="hs-comment">{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1993-1998

\section[IdInfo]{@IdInfos@: Non-essential information about @Ids@}

(And a pretty good illustration of quite a few things wrong with
Haskell. [WDP 94/11])
-}</span><span>
</span><span id="line-10"></span><span>
</span><span id="line-11"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-12"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-13"></span><span class="hs-pragma">{-# LANGUAGE BinaryLiterals #-}</span><span>
</span><span id="line-14"></span><span>
</span><span id="line-15"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-record-updates #-}</span><span>
</span><span id="line-16"></span><span>
</span><span id="line-17"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Types.Id.Info</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-18"></span><span>        </span><span class="annot"><span class="hs-comment">-- * The IdDetails type</span></span><span>
</span><span id="line-19"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier">IdDetails</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#pprIdDetails"><span class="hs-identifier">pprIdDetails</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#coVarDetails"><span class="hs-identifier">coVarDetails</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#isCoVarDetails"><span class="hs-identifier">isCoVarDetails</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#JoinArity"><span class="hs-identifier">JoinArity</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#isJoinIdDetails_maybe"><span class="hs-identifier">isJoinIdDetails_maybe</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-21"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelParent"><span class="hs-identifier">RecSelParent</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>
</span><span id="line-23"></span><span>        </span><span class="annot"><span class="hs-comment">-- * The IdInfo type</span></span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier">IdInfo</span></a></span><span class="hs-special">,</span><span>         </span><span class="hs-comment">-- Abstract</span><span>
</span><span id="line-25"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#vanillaIdInfo"><span class="hs-identifier">vanillaIdInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#noCafIdInfo"><span class="hs-identifier">noCafIdInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The OneShotInfo type</span></span><span>
</span><span id="line-28"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#OneShotInfo"><span class="hs-identifier">OneShotInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#oneShotInfo"><span class="hs-identifier">oneShotInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#noOneShotInfo"><span class="hs-identifier">noOneShotInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#hasNoOneShotInfo"><span class="hs-identifier">hasNoOneShotInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#setOneShotInfo"><span class="hs-identifier">setOneShotInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-31"></span><span>
</span><span id="line-32"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Zapping various forms of Info</span></span><span>
</span><span id="line-33"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapLamInfo"><span class="hs-identifier">zapLamInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapFragileInfo"><span class="hs-identifier">zapFragileInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapDemandInfo"><span class="hs-identifier">zapDemandInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUsageInfo"><span class="hs-identifier">zapUsageInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUsageEnvInfo"><span class="hs-identifier">zapUsageEnvInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUsedOnceInfo"><span class="hs-identifier">zapUsedOnceInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-35"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapTailCallInfo"><span class="hs-identifier">zapTailCallInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapCallArityInfo"><span class="hs-identifier">zapCallArityInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUnfolding"><span class="hs-identifier">zapUnfolding</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>
</span><span id="line-37"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The ArityInfo type</span></span><span>
</span><span id="line-38"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier">ArityInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-39"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#unknownArity"><span class="hs-identifier">unknownArity</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-40"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#arityInfo"><span class="hs-identifier">arityInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setArityInfo"><span class="hs-identifier">setArityInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ppArityInfo"><span class="hs-identifier">ppArityInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-41"></span><span>
</span><span id="line-42"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#callArityInfo"><span class="hs-identifier">callArityInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setCallArityInfo"><span class="hs-identifier">setCallArityInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Demand and strictness Info</span></span><span>
</span><span id="line-45"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier">strictnessInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setStrictnessInfo"><span class="hs-identifier">setStrictnessInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#cprInfo"><span class="hs-identifier">cprInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setCprInfo"><span class="hs-identifier">setCprInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier">demandInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setDemandInfo"><span class="hs-identifier">setDemandInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#pprStrictness"><span class="hs-identifier">pprStrictness</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-48"></span><span>
</span><span id="line-49"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Unfolding Info</span></span><span>
</span><span id="line-50"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#unfoldingInfo"><span class="hs-identifier">unfoldingInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setUnfoldingInfo"><span class="hs-identifier">setUnfoldingInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-51"></span><span>
</span><span id="line-52"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The InlinePragInfo type</span></span><span>
</span><span id="line-53"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#InlinePragInfo"><span class="hs-identifier">InlinePragInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-54"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#inlinePragInfo"><span class="hs-identifier">inlinePragInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setInlinePragInfo"><span class="hs-identifier">setInlinePragInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>
</span><span id="line-56"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The OccInfo type</span></span><span>
</span><span id="line-57"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#OccInfo"><span class="hs-identifier">OccInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#isDeadOcc"><span class="hs-identifier">isDeadOcc</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#isStrongLoopBreaker"><span class="hs-identifier">isStrongLoopBreaker</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#isWeakLoopBreaker"><span class="hs-identifier">isWeakLoopBreaker</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-59"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier">occInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setOccInfo"><span class="hs-identifier">setOccInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-60"></span><span>
</span><span id="line-61"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#InsideLam"><span class="hs-identifier">InsideLam</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#BranchCount"><span class="hs-identifier">BranchCount</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>
</span><span id="line-63"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#TailCallInfo"><span class="hs-identifier">TailCallInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-64"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#tailCallInfo"><span class="hs-identifier">tailCallInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#isAlwaysTailCalled"><span class="hs-identifier">isAlwaysTailCalled</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>
</span><span id="line-66"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The RuleInfo type</span></span><span>
</span><span id="line-67"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier">RuleInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-68"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#emptyRuleInfo"><span class="hs-identifier">emptyRuleInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-69"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#isEmptyRuleInfo"><span class="hs-identifier">isEmptyRuleInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ruleInfoFreeVars"><span class="hs-identifier">ruleInfoFreeVars</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-70"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#ruleInfoRules"><span class="hs-identifier">ruleInfoRules</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setRuleInfoHead"><span class="hs-identifier">setRuleInfoHead</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-71"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#ruleInfo"><span class="hs-identifier">ruleInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setRuleInfo"><span class="hs-identifier">setRuleInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-72"></span><span>
</span><span id="line-73"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The CAFInfo type</span></span><span>
</span><span id="line-74"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier">CafInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-75"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#ppCafInfo"><span class="hs-identifier">ppCafInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#mayHaveCafRefs"><span class="hs-identifier">mayHaveCafRefs</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-76"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#cafInfo"><span class="hs-identifier">cafInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setCafInfo"><span class="hs-identifier">setCafInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-77"></span><span>
</span><span id="line-78"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** The LambdaFormInfo type</span></span><span>
</span><span id="line-79"></span><span>        </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LambdaFormInfo"><span class="hs-identifier">LambdaFormInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-80"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#lfInfo"><span class="hs-identifier">lfInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setLFInfo"><span class="hs-identifier">setLFInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-81"></span><span>
</span><span id="line-82"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Tick-box Info</span></span><span>
</span><span id="line-83"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxOp"><span class="hs-identifier">TickBoxOp</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxId"><span class="hs-identifier">TickBoxId</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-84"></span><span>
</span><span id="line-85"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Levity info</span></span><span>
</span><span id="line-86"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#LevityInfo"><span class="hs-identifier">LevityInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#levityInfo"><span class="hs-identifier">levityInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setNeverLevPoly"><span class="hs-identifier">setNeverLevPoly</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setLevityInfoWithType"><span class="hs-identifier">setLevityInfoWithType</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-87"></span><span>        </span><span class="annot"><a href="GHC.Types.Id.Info.html#isNeverLevPolyIdInfo"><span class="hs-identifier">isNeverLevPolyIdInfo</span></a></span><span>
</span><span id="line-88"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-92"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-93"></span><span>
</span><span id="line-94"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span> </span><span class="hs-keyword">hiding</span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.html#hasCoreUnfolding"><span class="hs-identifier">hasCoreUnfolding</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-95"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.html#hasCoreUnfolding"><span class="hs-identifier">hasCoreUnfolding</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-96"></span><span>
</span><span id="line-97"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Class.html"><span class="hs-identifier">GHC.Core.Class</span></a></span><span>
</span><span id="line-98"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Builtin.PrimOps.html"><span class="hs-identifier">GHC.Builtin.PrimOps</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Builtin.PrimOps.html#PrimOp"><span class="hs-identifier">PrimOp</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-99"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-100"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html"><span class="hs-identifier">GHC.Types.Var.Set</span></a></span><span>
</span><span id="line-101"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span>
</span><span id="line-102"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-103"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span>
</span><span id="line-104"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html"><span class="hs-identifier">GHC.Core.PatSyn</span></a></span><span>
</span><span id="line-105"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>
</span><span id="line-106"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html"><span class="hs-identifier">GHC.Types.ForeignCall</span></a></span><span>
</span><span id="line-107"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-108"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Unit.Module.html"><span class="hs-identifier">GHC.Unit.Module</span></a></span><span>
</span><span id="line-109"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html"><span class="hs-identifier">GHC.Types.Demand</span></a></span><span>
</span><span id="line-110"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Cpr.html"><span class="hs-identifier">GHC.Types.Cpr</span></a></span><span>
</span><span id="line-111"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-112"></span><span>
</span><span id="line-113"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Word.html#"><span class="hs-identifier">Data.Word</span></a></span><span>
</span><span id="line-114"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Bits.html#"><span class="hs-identifier">Data.Bits</span></a></span><span>
</span><span id="line-115"></span><span>
</span><span id="line-116"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html"><span class="hs-identifier">GHC.StgToCmm.Types</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.StgToCmm.Types.html#LambdaFormInfo"><span class="hs-identifier">LambdaFormInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-117"></span><span>
</span><span id="line-118"></span><span class="hs-comment">-- infixl so you can say (id `set` a `set` b)</span><span>
</span><span id="line-119"></span><span class="hs-keyword">infixl</span><span>  </span><span class="hs-number">1</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#setRuleInfo"><span class="hs-operator hs-type">`setRuleInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-120"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setArityInfo"><span class="hs-operator hs-type">`setArityInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-121"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setInlinePragInfo"><span class="hs-operator hs-type">`setInlinePragInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-122"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setUnfoldingInfo"><span class="hs-operator hs-type">`setUnfoldingInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-123"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setOneShotInfo"><span class="hs-operator hs-type">`setOneShotInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-124"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setOccInfo"><span class="hs-operator hs-type">`setOccInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-125"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setCafInfo"><span class="hs-operator hs-type">`setCafInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-126"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setStrictnessInfo"><span class="hs-operator hs-type">`setStrictnessInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-127"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setCprInfo"><span class="hs-operator hs-type">`setCprInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-128"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setDemandInfo"><span class="hs-operator hs-type">`setDemandInfo`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-129"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setNeverLevPoly"><span class="hs-operator hs-type">`setNeverLevPoly`</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-130"></span><span>          </span><span class="annot"><a href="GHC.Types.Id.Info.html#setLevityInfoWithType"><span class="hs-operator hs-type">`setLevityInfoWithType`</span></a></span><span>
</span><span id="line-131"></span><span>
</span><span id="line-132"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                     IdDetails
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-139"></span><span>
</span><span id="line-140"></span><span class="hs-comment">-- | Identifier Details</span><span>
</span><span id="line-141"></span><span class="hs-comment">--</span><span>
</span><span id="line-142"></span><span class="hs-comment">-- The 'IdDetails' of an 'Id' give stable, and necessary,</span><span>
</span><span id="line-143"></span><span class="hs-comment">-- information about the Id.</span><span>
</span><span id="line-144"></span><span class="hs-keyword">data</span><span> </span><span id="IdDetails"><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-var">IdDetails</span></a></span></span><span>
</span><span id="line-145"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="VanillaId"><span class="annot"><a href="GHC.Types.Id.Info.html#VanillaId"><span class="hs-identifier hs-var">VanillaId</span></a></span></span><span>
</span><span id="line-146"></span><span>
</span><span id="line-147"></span><span>  </span><span class="hs-comment">-- | The 'Id' for a record selector</span><span>
</span><span id="line-148"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="RecSelId"><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelId"><span class="hs-identifier hs-var">RecSelId</span></a></span></span><span>
</span><span id="line-149"></span><span>    </span><span class="hs-special">{</span><span> </span><span id="sel_tycon"><span class="annot"><span class="annottext">IdDetails -&gt; RecSelParent
</span><a href="GHC.Types.Id.Info.html#sel_tycon"><span class="hs-identifier hs-var hs-var">sel_tycon</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelParent"><span class="hs-identifier hs-type">RecSelParent</span></a></span><span>
</span><span id="line-150"></span><span>    </span><span class="hs-special">,</span><span> </span><span id="sel_naughty"><span class="annot"><span class="annottext">IdDetails -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#sel_naughty"><span class="hs-identifier hs-var hs-var">sel_naughty</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>       </span><span class="hs-comment">-- True &lt;=&gt; a &quot;naughty&quot; selector which can't actually exist, for example @x@ in:</span><span>
</span><span id="line-151"></span><span>                                </span><span class="hs-comment">--    data T = forall a. MkT { x :: a }</span><span>
</span><span id="line-152"></span><span>    </span><span class="hs-special">}</span><span>                           </span><span class="hs-comment">-- See Note [Naughty record selectors] in GHC.Tc.TyCl</span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DataConWorkId"><span class="annot"><a href="GHC.Types.Id.Info.html#DataConWorkId"><span class="hs-identifier hs-var">DataConWorkId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>       </span><span class="hs-comment">-- ^ The 'Id' is for a data constructor /worker/</span><span>
</span><span id="line-155"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DataConWrapId"><span class="annot"><a href="GHC.Types.Id.Info.html#DataConWrapId"><span class="hs-identifier hs-var">DataConWrapId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>       </span><span class="hs-comment">-- ^ The 'Id' is for a data constructor /wrapper/</span><span>
</span><span id="line-156"></span><span>
</span><span id="line-157"></span><span>                                </span><span class="hs-comment">-- [the only reasons we need to know is so that</span><span>
</span><span id="line-158"></span><span>                                </span><span class="hs-comment">--  a) to support isImplicitId</span><span>
</span><span id="line-159"></span><span>                                </span><span class="hs-comment">--  b) when desugaring a RecordCon we can get</span><span>
</span><span id="line-160"></span><span>                                </span><span class="hs-comment">--     from the Id back to the data con]</span><span>
</span><span id="line-161"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ClassOpId"><span class="annot"><a href="GHC.Types.Id.Info.html#ClassOpId"><span class="hs-identifier hs-var">ClassOpId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Class.html#Class"><span class="hs-identifier hs-type">Class</span></a></span><span>             </span><span class="hs-comment">-- ^ The 'Id' is a superclass selector,</span><span>
</span><span id="line-162"></span><span>                                </span><span class="hs-comment">-- or class operation of a class</span><span>
</span><span id="line-163"></span><span>
</span><span id="line-164"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PrimOpId"><span class="annot"><a href="GHC.Types.Id.Info.html#PrimOpId"><span class="hs-identifier hs-var">PrimOpId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Builtin.PrimOps.html#PrimOp"><span class="hs-identifier hs-type">PrimOp</span></a></span><span>             </span><span class="hs-comment">-- ^ The 'Id' is for a primitive operator</span><span>
</span><span id="line-165"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="FCallId"><span class="annot"><a href="GHC.Types.Id.Info.html#FCallId"><span class="hs-identifier hs-var">FCallId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#ForeignCall"><span class="hs-identifier hs-type">ForeignCall</span></a></span><span>         </span><span class="hs-comment">-- ^ The 'Id' is for a foreign call.</span><span>
</span><span id="line-166"></span><span>                                </span><span class="hs-comment">-- Type will be simple: no type families, newtypes, etc</span><span>
</span><span id="line-167"></span><span>
</span><span id="line-168"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TickBoxOpId"><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxOpId"><span class="hs-identifier hs-var">TickBoxOpId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxOp"><span class="hs-identifier hs-type">TickBoxOp</span></a></span><span>       </span><span class="hs-comment">-- ^ The 'Id' is for a HPC tick box (both traditional and binary)</span><span>
</span><span id="line-169"></span><span>
</span><span id="line-170"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DFunId"><span class="annot"><a href="GHC.Types.Id.Info.html#DFunId"><span class="hs-identifier hs-var">DFunId</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>                 </span><span class="hs-comment">-- ^ A dictionary function.</span><span>
</span><span id="line-171"></span><span>       </span><span class="hs-comment">-- Bool = True &lt;=&gt; the class has only one method, so may be</span><span>
</span><span id="line-172"></span><span>       </span><span class="hs-comment">--                  implemented with a newtype, so it might be bad</span><span>
</span><span id="line-173"></span><span>       </span><span class="hs-comment">--                  to be strict on this dictionary</span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CoVarId"><span class="annot"><a href="GHC.Types.Id.Info.html#CoVarId"><span class="hs-identifier hs-var">CoVarId</span></a></span></span><span>    </span><span class="hs-comment">-- ^ A coercion variable</span><span>
</span><span id="line-176"></span><span>               </span><span class="hs-comment">-- This only covers /un-lifted/ coercions, of type</span><span>
</span><span id="line-177"></span><span>               </span><span class="hs-comment">-- (t1 ~# t2) or (t1 ~R# t2), not their lifted variants</span><span>
</span><span id="line-178"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="JoinId"><span class="annot"><a href="GHC.Types.Id.Info.html#JoinId"><span class="hs-identifier hs-var">JoinId</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#JoinArity"><span class="hs-identifier hs-type">JoinArity</span></a></span><span>           </span><span class="hs-comment">-- ^ An 'Id' for a join point taking n arguments</span><span>
</span><span id="line-179"></span><span>       </span><span class="hs-comment">-- Note [Join points] in &quot;GHC.Core&quot;</span><span>
</span><span id="line-180"></span><span>
</span><span id="line-181"></span><span class="hs-comment">-- | Recursive Selector Parent</span><span>
</span><span id="line-182"></span><span class="hs-keyword">data</span><span> </span><span id="RecSelParent"><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelParent"><span class="hs-identifier hs-var">RecSelParent</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="RecSelData"><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelData"><span class="hs-identifier hs-var">RecSelData</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="RecSelPatSyn"><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelPatSyn"><span class="hs-identifier hs-var">RecSelPatSyn</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html#PatSyn"><span class="hs-identifier hs-type">PatSyn</span></a></span><span> </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621680808469"><span id="local-6989586621680808475"><span class="annot"><span class="annottext">RecSelParent -&gt; RecSelParent -&gt; Bool
(RecSelParent -&gt; RecSelParent -&gt; Bool)
-&gt; (RecSelParent -&gt; RecSelParent -&gt; Bool) -&gt; Eq RecSelParent
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: RecSelParent -&gt; RecSelParent -&gt; Bool
$c/= :: RecSelParent -&gt; RecSelParent -&gt; Bool
== :: RecSelParent -&gt; RecSelParent -&gt; Bool
$c== :: RecSelParent -&gt; RecSelParent -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span>
</span><span id="line-183"></span><span>  </span><span class="hs-comment">-- Either `TyCon` or `PatSyn` depending</span><span>
</span><span id="line-184"></span><span>  </span><span class="hs-comment">-- on the origin of the record selector.</span><span>
</span><span id="line-185"></span><span>  </span><span class="hs-comment">-- For a data type family, this is the</span><span>
</span><span id="line-186"></span><span>  </span><span class="hs-comment">-- /instance/ 'TyCon' not the family 'TyCon'</span><span>
</span><span id="line-187"></span><span>
</span><span id="line-188"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680808465"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelParent"><span class="hs-identifier hs-type">RecSelParent</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-189"></span><span>  </span><span id="local-6989586621680808459"><span class="annot"><span class="annottext">ppr :: RecSelParent -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span id="local-6989586621680808457"><span class="annot"><span class="annottext">RecSelParent
</span><a href="#local-6989586621680808457"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">RecSelParent
</span><a href="#local-6989586621680808457"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-190"></span><span>            </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelData"><span class="hs-identifier hs-type">RecSelData</span></a></span><span> </span><span id="local-6989586621680808456"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680808456"><span class="hs-identifier hs-var">ty_con</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680808456"><span class="hs-identifier hs-var">ty_con</span></a></span><span>
</span><span id="line-191"></span><span>            </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelPatSyn"><span class="hs-identifier hs-type">RecSelPatSyn</span></a></span><span> </span><span id="local-6989586621680808455"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680808455"><span class="hs-identifier hs-var">ps</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680808455"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-192"></span><span>
</span><span id="line-193"></span><span class="hs-comment">-- | Just a synonym for 'CoVarId'. Written separately so it can be</span><span>
</span><span id="line-194"></span><span class="hs-comment">-- exported in the hs-boot file.</span><span>
</span><span id="line-195"></span><span class="annot"><a href="GHC.Types.Id.Info.html#coVarDetails"><span class="hs-identifier hs-type">coVarDetails</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-type">IdDetails</span></a></span><span>
</span><span id="line-196"></span><span id="coVarDetails"><span class="annot"><span class="annottext">coVarDetails :: IdDetails
</span><a href="GHC.Types.Id.Info.html#coVarDetails"><span class="hs-identifier hs-var hs-var">coVarDetails</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="GHC.Types.Id.Info.html#CoVarId"><span class="hs-identifier hs-var">CoVarId</span></a></span><span>
</span><span id="line-197"></span><span>
</span><span id="line-198"></span><span class="hs-comment">-- | Check if an 'IdDetails' says 'CoVarId'.</span><span>
</span><span id="line-199"></span><span class="annot"><a href="GHC.Types.Id.Info.html#isCoVarDetails"><span class="hs-identifier hs-type">isCoVarDetails</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-type">IdDetails</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-200"></span><span id="isCoVarDetails"><span class="annot"><span class="annottext">isCoVarDetails :: IdDetails -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#isCoVarDetails"><span class="hs-identifier hs-var hs-var">isCoVarDetails</span></a></span></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="GHC.Types.Id.Info.html#CoVarId"><span class="hs-identifier hs-var">CoVarId</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-201"></span><span class="annot"><a href="GHC.Types.Id.Info.html#isCoVarDetails"><span class="hs-identifier hs-var">isCoVarDetails</span></a></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-202"></span><span>
</span><span id="line-203"></span><span class="annot"><a href="GHC.Types.Id.Info.html#isJoinIdDetails_maybe"><span class="hs-identifier hs-type">isJoinIdDetails_maybe</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-type">IdDetails</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#JoinArity"><span class="hs-identifier hs-type">JoinArity</span></a></span><span>
</span><span id="line-204"></span><span id="isJoinIdDetails_maybe"><span class="annot"><span class="annottext">isJoinIdDetails_maybe :: IdDetails -&gt; Maybe Int
</span><a href="GHC.Types.Id.Info.html#isJoinIdDetails_maybe"><span class="hs-identifier hs-var hs-var">isJoinIdDetails_maybe</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#JoinId"><span class="hs-identifier hs-type">JoinId</span></a></span><span> </span><span id="local-6989586621680808454"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808454"><span class="hs-identifier hs-var">join_arity</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Maybe Int
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808454"><span class="hs-identifier hs-var">join_arity</span></a></span><span>
</span><span id="line-205"></span><span class="annot"><a href="GHC.Types.Id.Info.html#isJoinIdDetails_maybe"><span class="hs-identifier hs-var">isJoinIdDetails_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><span class="hs-identifier">_</span></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe Int
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680808451"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-type">IdDetails</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-208"></span><span>    </span><span id="local-6989586621680808450"><span class="annot"><span class="annottext">ppr :: IdDetails -&gt; SDoc
</span><a href="#local-6989586621680808450"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdDetails -&gt; SDoc
</span><a href="GHC.Types.Id.Info.html#pprIdDetails"><span class="hs-identifier hs-var">pprIdDetails</span></a></span><span>
</span><span id="line-209"></span><span>
</span><span id="line-210"></span><span class="annot"><a href="GHC.Types.Id.Info.html#pprIdDetails"><span class="hs-identifier hs-type">pprIdDetails</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-type">IdDetails</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-211"></span><span id="pprIdDetails"><span class="annot"><span class="annottext">pprIdDetails :: IdDetails -&gt; SDoc
</span><a href="GHC.Types.Id.Info.html#pprIdDetails"><span class="hs-identifier hs-var hs-var">pprIdDetails</span></a></span></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="GHC.Types.Id.Info.html#VanillaId"><span class="hs-identifier hs-var">VanillaId</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-212"></span><span class="annot"><a href="GHC.Types.Id.Info.html#pprIdDetails"><span class="hs-identifier hs-var">pprIdDetails</span></a></span><span> </span><span id="local-6989586621680808448"><span class="annot"><span class="annottext">IdDetails
</span><a href="#local-6989586621680808448"><span class="hs-identifier hs-var">other</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdDetails -&gt; SDoc
</span><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="#local-6989586621680808448"><span class="hs-identifier hs-var">other</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-213"></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-214"></span><span>   </span><span id="local-6989586621680808446"><span class="annot"><span class="annottext">pp :: IdDetails -&gt; SDoc
</span><a href="#local-6989586621680808446"><span class="hs-identifier hs-var hs-var">pp</span></a></span></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="GHC.Types.Id.Info.html#VanillaId"><span class="hs-identifier hs-var">VanillaId</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprIdDetails&quot;</span></span><span>
</span><span id="line-215"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#DataConWorkId"><span class="hs-identifier hs-type">DataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;DataCon&quot;</span></span><span>
</span><span id="line-216"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#DataConWrapId"><span class="hs-identifier hs-type">DataConWrapId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;DataConWrapper&quot;</span></span><span>
</span><span id="line-217"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#ClassOpId"><span class="hs-identifier hs-type">ClassOpId</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ClassOp&quot;</span></span><span>
</span><span id="line-218"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#PrimOpId"><span class="hs-identifier hs-type">PrimOpId</span></a></span><span> </span><span class="annot"><span class="annottext">PrimOp
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PrimOp&quot;</span></span><span>
</span><span id="line-219"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#FCallId"><span class="hs-identifier hs-type">FCallId</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignCall
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ForeignCall&quot;</span></span><span>
</span><span id="line-220"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxOpId"><span class="hs-identifier hs-type">TickBoxOpId</span></a></span><span> </span><span class="annot"><span class="annottext">TickBoxOp
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TickBoxOp&quot;</span></span><span>
</span><span id="line-221"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#DFunId"><span class="hs-identifier hs-type">DFunId</span></a></span><span> </span><span id="local-6989586621680808443"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680808443"><span class="hs-identifier hs-var">nt</span></a></span></span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;DFunId&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppWhen"><span class="hs-identifier hs-var">ppWhen</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680808443"><span class="hs-identifier hs-var">nt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(nt)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-222"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelId"><span class="hs-identifier hs-type">RecSelId</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">sel_naughty :: IdDetails -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#sel_naughty"><span class="hs-identifier hs-var">sel_naughty</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680808440"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680808440"><span class="hs-identifier hs-var">is_naughty</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-223"></span><span>                              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;RecSel&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span>
</span><span id="line-224"></span><span>                                           </span><span class="annot"><span class="annottext">Bool -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppWhen"><span class="hs-identifier hs-var">ppWhen</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680808440"><span class="hs-identifier hs-var">is_naughty</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(naughty)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-225"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="GHC.Types.Id.Info.html#CoVarId"><span class="hs-identifier hs-var">CoVarId</span></a></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CoVarId&quot;</span></span><span>
</span><span id="line-226"></span><span>   </span><span class="annot"><a href="#local-6989586621680808446"><span class="hs-identifier hs-var">pp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#JoinId"><span class="hs-identifier hs-type">JoinId</span></a></span><span> </span><span id="local-6989586621680808439"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808439"><span class="hs-identifier hs-var">arity</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;JoinId&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808439"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-227"></span><span>
</span><span id="line-228"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{The main IdInfo type}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-235"></span><span>
</span><span id="line-236"></span><span class="hs-comment">-- | Identifier Information</span><span>
</span><span id="line-237"></span><span class="hs-comment">--</span><span>
</span><span id="line-238"></span><span class="hs-comment">-- An 'IdInfo' gives /optional/ information about an 'Id'.  If</span><span>
</span><span id="line-239"></span><span class="hs-comment">-- present it never lies, but it may not be present, in which case there</span><span>
</span><span id="line-240"></span><span class="hs-comment">-- is always a conservative assumption which can be made.</span><span>
</span><span id="line-241"></span><span class="hs-comment">--</span><span>
</span><span id="line-242"></span><span class="hs-comment">-- Two 'Id's may have different info even though they have the same</span><span>
</span><span id="line-243"></span><span class="hs-comment">-- 'Unique' (and are hence the same 'Id'); for example, one might lack</span><span>
</span><span id="line-244"></span><span class="hs-comment">-- the properties attached to the other.</span><span>
</span><span id="line-245"></span><span class="hs-comment">--</span><span>
</span><span id="line-246"></span><span class="hs-comment">-- Most of the 'IdInfo' gives information about the value, or definition, of</span><span>
</span><span id="line-247"></span><span class="hs-comment">-- the 'Id', independent of its usage. Exceptions to this</span><span>
</span><span id="line-248"></span><span class="hs-comment">-- are 'demandInfo', 'occInfo', 'oneShotInfo' and 'callArityInfo'.</span><span>
</span><span id="line-249"></span><span class="hs-comment">--</span><span>
</span><span id="line-250"></span><span class="hs-comment">-- Performance note: when we update 'IdInfo', we have to reallocate this</span><span>
</span><span id="line-251"></span><span class="hs-comment">-- entire record, so it is a good idea not to let this data structure get</span><span>
</span><span id="line-252"></span><span class="hs-comment">-- too big.</span><span>
</span><span id="line-253"></span><span class="hs-keyword">data</span><span> </span><span id="IdInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-var">IdInfo</span></a></span></span><span>
</span><span id="line-254"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="IdInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-var">IdInfo</span></a></span></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-255"></span><span>        </span><span id="ruleInfo"><span class="annot"><span class="annottext">IdInfo -&gt; RuleInfo
</span><a href="GHC.Types.Id.Info.html#ruleInfo"><span class="hs-identifier hs-var hs-var">ruleInfo</span></a></span></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-256"></span><span>        </span><span class="hs-comment">-- ^ Specialisations of the 'Id's function which exist.</span><span>
</span><span id="line-257"></span><span>        </span><span class="hs-comment">-- See Note [Specialisations and RULES in IdInfo]</span><span>
</span><span id="line-258"></span><span>        </span><span id="unfoldingInfo"><span class="annot"><span class="annottext">IdInfo -&gt; Unfolding
</span><a href="GHC.Types.Id.Info.html#unfoldingInfo"><span class="hs-identifier hs-var hs-var">unfoldingInfo</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-259"></span><span>        </span><span class="hs-comment">-- ^ The 'Id's unfolding</span><span>
</span><span id="line-260"></span><span>        </span><span id="inlinePragInfo"><span class="annot"><span class="annottext">IdInfo -&gt; InlinePragma
</span><a href="GHC.Types.Id.Info.html#inlinePragInfo"><span class="hs-identifier hs-var hs-var">inlinePragInfo</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-261"></span><span>        </span><span class="hs-comment">-- ^ Any inline pragma attached to the 'Id'</span><span>
</span><span id="line-262"></span><span>        </span><span id="occInfo"><span class="annot"><span class="annottext">IdInfo -&gt; OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var hs-var">occInfo</span></a></span></span><span>         </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#OccInfo"><span class="hs-identifier hs-type">OccInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-263"></span><span>        </span><span class="hs-comment">-- ^ How the 'Id' occurs in the program</span><span>
</span><span id="line-264"></span><span>        </span><span id="strictnessInfo"><span class="annot"><span class="annottext">IdInfo -&gt; StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var hs-var">strictnessInfo</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html#StrictSig"><span class="hs-identifier hs-type">StrictSig</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-265"></span><span>        </span><span class="hs-comment">-- ^ A strictness signature. Digests how a function uses its arguments</span><span>
</span><span id="line-266"></span><span>        </span><span class="hs-comment">-- if applied to at least 'arityInfo' arguments.</span><span>
</span><span id="line-267"></span><span>        </span><span id="cprInfo"><span class="annot"><span class="annottext">IdInfo -&gt; CprSig
</span><a href="GHC.Types.Id.Info.html#cprInfo"><span class="hs-identifier hs-var hs-var">cprInfo</span></a></span></span><span>         </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Cpr.html#CprSig"><span class="hs-identifier hs-type">CprSig</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-268"></span><span>        </span><span class="hs-comment">-- ^ Information on whether the function will ultimately return a</span><span>
</span><span id="line-269"></span><span>        </span><span class="hs-comment">-- freshly allocated constructor.</span><span>
</span><span id="line-270"></span><span>        </span><span id="demandInfo"><span class="annot"><span class="annottext">IdInfo -&gt; Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var hs-var">demandInfo</span></a></span></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html#Demand"><span class="hs-identifier hs-type">Demand</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-271"></span><span>        </span><span class="hs-comment">-- ^ ID demand information</span><span>
</span><span id="line-272"></span><span>        </span><span id="bitfield"><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-273"></span><span>        </span><span class="hs-comment">-- ^ Bitfield packs CafInfo, OneShotInfo, arity info, LevityInfo, and</span><span>
</span><span id="line-274"></span><span>        </span><span class="hs-comment">-- call arity info in one 64-bit word. Packing these fields reduces size</span><span>
</span><span id="line-275"></span><span>        </span><span class="hs-comment">-- of `IdInfo` from 12 words to 7 words and reduces residency by almost</span><span>
</span><span id="line-276"></span><span>        </span><span class="hs-comment">-- 4% in some programs. See #17497 and associated MR.</span><span>
</span><span id="line-277"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-278"></span><span>        </span><span class="hs-comment">-- See documentation of the getters for what these packed fields mean.</span><span>
</span><span id="line-279"></span><span>        </span><span id="lfInfo"><span class="annot"><span class="annottext">IdInfo -&gt; Maybe LambdaFormInfo
</span><a href="GHC.Types.Id.Info.html#lfInfo"><span class="hs-identifier hs-var hs-var">lfInfo</span></a></span></span><span>          </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LambdaFormInfo"><span class="hs-identifier hs-type">LambdaFormInfo</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-280"></span><span>    </span><span class="hs-special">}</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span class="hs-comment">-- | Encodes arities, OneShotInfo, CafInfo and LevityInfo.</span><span>
</span><span id="line-283"></span><span class="hs-comment">-- From least-significant to most-significant bits:</span><span>
</span><span id="line-284"></span><span class="hs-comment">--</span><span>
</span><span id="line-285"></span><span class="hs-comment">-- - Bit   0   (1):  OneShotInfo</span><span>
</span><span id="line-286"></span><span class="hs-comment">-- - Bit   1   (1):  CafInfo</span><span>
</span><span id="line-287"></span><span class="hs-comment">-- - Bit   2   (1):  LevityInfo</span><span>
</span><span id="line-288"></span><span class="hs-comment">-- - Bits  3-32(30): Call Arity info</span><span>
</span><span id="line-289"></span><span class="hs-comment">-- - Bits 33-62(30): Arity info</span><span>
</span><span id="line-290"></span><span class="hs-comment">--</span><span>
</span><span id="line-291"></span><span class="hs-keyword">newtype</span><span> </span><span id="BitField"><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="BitField"><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word64"><span class="hs-identifier hs-type">Word64</span></a></span><span>
</span><span id="line-292"></span><span>
</span><span id="line-293"></span><span class="annot"><a href="GHC.Types.Id.Info.html#emptyBitField"><span class="hs-identifier hs-type">emptyBitField</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span>
</span><span id="line-294"></span><span id="emptyBitField"><span class="annot"><span class="annottext">emptyBitField :: BitField
</span><a href="GHC.Types.Id.Info.html#emptyBitField"><span class="hs-identifier hs-var hs-var">emptyBitField</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><span class="hs-number">0</span></span><span>
</span><span id="line-295"></span><span>
</span><span id="line-296"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldGetOneShotInfo"><span class="hs-identifier hs-type">bitfieldGetOneShotInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#OneShotInfo"><span class="hs-identifier hs-type">OneShotInfo</span></a></span><span>
</span><span id="line-297"></span><span id="bitfieldGetOneShotInfo"><span class="annot"><span class="annottext">bitfieldGetOneShotInfo :: BitField -&gt; OneShotInfo
</span><a href="GHC.Types.Id.Info.html#bitfieldGetOneShotInfo"><span class="hs-identifier hs-var hs-var">bitfieldGetOneShotInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808431"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808431"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-298"></span><span>    </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Bool
forall a. Bits a =&gt; a -&gt; Int -&gt; Bool
</span><a href="../../base/src/Data.Bits.html#testBit"><span class="hs-identifier hs-var">testBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808431"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="GHC.Types.Basic.html#OneShotLam"><span class="hs-identifier hs-var">OneShotLam</span></a></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="GHC.Types.Basic.html#NoOneShotInfo"><span class="hs-identifier hs-var">NoOneShotInfo</span></a></span><span>
</span><span id="line-299"></span><span>
</span><span id="line-300"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldGetCafInfo"><span class="hs-identifier hs-type">bitfieldGetCafInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span>
</span><span id="line-301"></span><span id="bitfieldGetCafInfo"><span class="annot"><span class="annottext">bitfieldGetCafInfo :: BitField -&gt; CafInfo
</span><a href="GHC.Types.Id.Info.html#bitfieldGetCafInfo"><span class="hs-identifier hs-var hs-var">bitfieldGetCafInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808426"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808426"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-302"></span><span>    </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Bool
forall a. Bits a =&gt; a -&gt; Int -&gt; Bool
</span><a href="../../base/src/Data.Bits.html#testBit"><span class="hs-identifier hs-var">testBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808426"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#NoCafRefs"><span class="hs-identifier hs-var">NoCafRefs</span></a></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#MayHaveCafRefs"><span class="hs-identifier hs-var">MayHaveCafRefs</span></a></span><span>
</span><span id="line-303"></span><span>
</span><span id="line-304"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldGetLevityInfo"><span class="hs-identifier hs-type">bitfieldGetLevityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#LevityInfo"><span class="hs-identifier hs-type">LevityInfo</span></a></span><span>
</span><span id="line-305"></span><span id="bitfieldGetLevityInfo"><span class="annot"><span class="annottext">bitfieldGetLevityInfo :: BitField -&gt; LevityInfo
</span><a href="GHC.Types.Id.Info.html#bitfieldGetLevityInfo"><span class="hs-identifier hs-var hs-var">bitfieldGetLevityInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808422"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808422"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-306"></span><span>    </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Bool
forall a. Bits a =&gt; a -&gt; Int -&gt; Bool
</span><a href="../../base/src/Data.Bits.html#testBit"><span class="hs-identifier hs-var">testBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808422"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NoLevityInfo"><span class="hs-identifier hs-var">NoLevityInfo</span></a></span><span>
</span><span id="line-307"></span><span>
</span><span id="line-308"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldGetCallArityInfo"><span class="hs-identifier hs-type">bitfieldGetCallArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span>
</span><span id="line-309"></span><span id="bitfieldGetCallArityInfo"><span class="annot"><span class="annottext">bitfieldGetCallArityInfo :: BitField -&gt; Int
</span><a href="GHC.Types.Id.Info.html#bitfieldGetCallArityInfo"><span class="hs-identifier hs-var hs-var">bitfieldGetCallArityInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808418"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808418"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-310"></span><span>    </span><span class="annot"><span class="annottext">Word64 -&gt; Int
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808418"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftR"><span class="hs-operator hs-var">`shiftR`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%26."><span class="hs-operator hs-var">.&amp;.</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">30</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-311"></span><span>
</span><span id="line-312"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldGetArityInfo"><span class="hs-identifier hs-type">bitfieldGetArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span>
</span><span id="line-313"></span><span id="bitfieldGetArityInfo"><span class="annot"><span class="annottext">bitfieldGetArityInfo :: BitField -&gt; Int
</span><a href="GHC.Types.Id.Info.html#bitfieldGetArityInfo"><span class="hs-identifier hs-var hs-var">bitfieldGetArityInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808413"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808413"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-314"></span><span>    </span><span class="annot"><span class="annottext">Word64 -&gt; Int
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808413"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftR"><span class="hs-operator hs-var">`shiftR`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">33</span></span><span class="hs-special">)</span><span>
</span><span id="line-315"></span><span>
</span><span id="line-316"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldSetOneShotInfo"><span class="hs-identifier hs-type">bitfieldSetOneShotInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#OneShotInfo"><span class="hs-identifier hs-type">OneShotInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span>
</span><span id="line-317"></span><span id="bitfieldSetOneShotInfo"><span class="annot"><span class="annottext">bitfieldSetOneShotInfo :: OneShotInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetOneShotInfo"><span class="hs-identifier hs-var hs-var">bitfieldSetOneShotInfo</span></a></span></span><span> </span><span id="local-6989586621680808411"><span class="annot"><span class="annottext">OneShotInfo
</span><a href="#local-6989586621680808411"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808410"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808410"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-318"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="#local-6989586621680808411"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-319"></span><span>      </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="GHC.Types.Basic.html#NoOneShotInfo"><span class="hs-identifier hs-var">NoOneShotInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#clearBit"><span class="hs-identifier hs-var">clearBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808410"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span>
</span><span id="line-320"></span><span>      </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="GHC.Types.Basic.html#OneShotLam"><span class="hs-identifier hs-var">OneShotLam</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#setBit"><span class="hs-identifier hs-var">setBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808410"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span>
</span><span id="line-321"></span><span>
</span><span id="line-322"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldSetCafInfo"><span class="hs-identifier hs-type">bitfieldSetCafInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span>
</span><span id="line-323"></span><span id="bitfieldSetCafInfo"><span class="annot"><span class="annottext">bitfieldSetCafInfo :: CafInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetCafInfo"><span class="hs-identifier hs-var hs-var">bitfieldSetCafInfo</span></a></span></span><span> </span><span id="local-6989586621680808406"><span class="annot"><span class="annottext">CafInfo
</span><a href="#local-6989586621680808406"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808405"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808405"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-324"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="#local-6989586621680808406"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-325"></span><span>      </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#MayHaveCafRefs"><span class="hs-identifier hs-var">MayHaveCafRefs</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#clearBit"><span class="hs-identifier hs-var">clearBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808405"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-326"></span><span>      </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#NoCafRefs"><span class="hs-identifier hs-var">NoCafRefs</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#setBit"><span class="hs-identifier hs-var">setBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808405"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-327"></span><span>
</span><span id="line-328"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldSetLevityInfo"><span class="hs-identifier hs-type">bitfieldSetLevityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#LevityInfo"><span class="hs-identifier hs-type">LevityInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span>
</span><span id="line-329"></span><span id="bitfieldSetLevityInfo"><span class="annot"><span class="annottext">bitfieldSetLevityInfo :: LevityInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetLevityInfo"><span class="hs-identifier hs-var hs-var">bitfieldSetLevityInfo</span></a></span></span><span> </span><span id="local-6989586621680808403"><span class="annot"><span class="annottext">LevityInfo
</span><a href="#local-6989586621680808403"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808402"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808402"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-330"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="#local-6989586621680808403"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-331"></span><span>      </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NoLevityInfo"><span class="hs-identifier hs-var">NoLevityInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#clearBit"><span class="hs-identifier hs-var">clearBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808402"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>
</span><span id="line-332"></span><span>      </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#setBit"><span class="hs-identifier hs-var">setBit</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808402"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>
</span><span id="line-333"></span><span>
</span><span id="line-334"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldSetCallArityInfo"><span class="hs-identifier hs-type">bitfieldSetCallArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span>
</span><span id="line-335"></span><span id="bitfieldSetCallArityInfo"><span class="annot"><span class="annottext">bitfieldSetCallArityInfo :: Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetCallArityInfo"><span class="hs-identifier hs-var hs-var">bitfieldSetCallArityInfo</span></a></span></span><span> </span><span id="local-6989586621680808400"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808400"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808399"><span class="annot"><span class="annottext">bf :: BitField
</span><a href="#local-6989586621680808399"><span class="hs-identifier hs-var">bf</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808398"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808398"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-336"></span><span>    </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span class="hs-identifier">info</span><span> </span><span class="hs-operator">&lt;</span><span> </span><span class="hs-number">2</span><span class="hs-operator">^</span><span class="hs-special">(</span><span class="hs-number">30</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Int</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-</span><span> </span><span class="hs-number">1</span><span class="hs-special">)</span><span>
</span><span id="line-337"></span><span>    </span><span class="annot"><span class="annottext">Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetArityInfo"><span class="hs-identifier hs-var">bitfieldSetArityInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BitField -&gt; Int
</span><a href="GHC.Types.Id.Info.html#bitfieldGetArityInfo"><span class="hs-identifier hs-var">bitfieldGetArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">BitField
</span><a href="#local-6989586621680808399"><span class="hs-identifier hs-var">bf</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; BitField) -&gt; BitField -&gt; BitField
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-338"></span><span>    </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Word64
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808400"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Word64
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808398"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Word64
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%26."><span class="hs-operator hs-var">.&amp;.</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><span class="hs-number">0b111</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-339"></span><span>
</span><span id="line-340"></span><span class="annot"><a href="GHC.Types.Id.Info.html#bitfieldSetArityInfo"><span class="hs-identifier hs-type">bitfieldSetArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span>
</span><span id="line-341"></span><span id="bitfieldSetArityInfo"><span class="annot"><span class="annottext">bitfieldSetArityInfo :: Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetArityInfo"><span class="hs-identifier hs-var hs-var">bitfieldSetArityInfo</span></a></span></span><span> </span><span id="local-6989586621680808389"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808389"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-type">BitField</span></a></span><span> </span><span id="local-6989586621680808388"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808388"><span class="hs-identifier hs-var">bits</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-342"></span><span>    </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span class="hs-identifier">info</span><span> </span><span class="hs-operator">&lt;</span><span> </span><span class="hs-number">2</span><span class="hs-operator">^</span><span class="hs-special">(</span><span class="hs-number">30</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Int</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-</span><span> </span><span class="hs-number">1</span><span class="hs-special">)</span><span>
</span><span id="line-343"></span><span>    </span><span class="annot"><span class="annottext">Word64 -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#BitField"><span class="hs-identifier hs-var">BitField</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Word64
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808389"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">33</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Word64
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621680808388"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Word64
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%26."><span class="hs-operator hs-var">.&amp;.</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">33</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Word64
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-344"></span><span>
</span><span id="line-345"></span><span class="hs-comment">-- Getters</span><span>
</span><span id="line-346"></span><span>
</span><span id="line-347"></span><span class="hs-comment">-- | When applied, will this Id ever have a levity-polymorphic type?</span><span>
</span><span id="line-348"></span><span class="annot"><a href="GHC.Types.Id.Info.html#levityInfo"><span class="hs-identifier hs-type">levityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#LevityInfo"><span class="hs-identifier hs-type">LevityInfo</span></a></span><span>
</span><span id="line-349"></span><span id="levityInfo"><span class="annot"><span class="annottext">levityInfo :: IdInfo -&gt; LevityInfo
</span><a href="GHC.Types.Id.Info.html#levityInfo"><span class="hs-identifier hs-var hs-var">levityInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BitField -&gt; LevityInfo
</span><a href="GHC.Types.Id.Info.html#bitfieldGetLevityInfo"><span class="hs-identifier hs-var">bitfieldGetLevityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; LevityInfo)
-&gt; (IdInfo -&gt; BitField) -&gt; IdInfo -&gt; LevityInfo
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span>
</span><span id="line-350"></span><span>
</span><span id="line-351"></span><span class="hs-comment">-- | Info about a lambda-bound variable, if the 'Id' is one</span><span>
</span><span id="line-352"></span><span class="annot"><a href="GHC.Types.Id.Info.html#oneShotInfo"><span class="hs-identifier hs-type">oneShotInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#OneShotInfo"><span class="hs-identifier hs-type">OneShotInfo</span></a></span><span>
</span><span id="line-353"></span><span id="oneShotInfo"><span class="annot"><span class="annottext">oneShotInfo :: IdInfo -&gt; OneShotInfo
</span><a href="GHC.Types.Id.Info.html#oneShotInfo"><span class="hs-identifier hs-var hs-var">oneShotInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BitField -&gt; OneShotInfo
</span><a href="GHC.Types.Id.Info.html#bitfieldGetOneShotInfo"><span class="hs-identifier hs-var">bitfieldGetOneShotInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; OneShotInfo)
-&gt; (IdInfo -&gt; BitField) -&gt; IdInfo -&gt; OneShotInfo
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span>
</span><span id="line-354"></span><span>
</span><span id="line-355"></span><span class="hs-comment">-- | 'Id' arity, as computed by &quot;GHC.Core.Opt.Arity&quot;. Specifies how many arguments</span><span>
</span><span id="line-356"></span><span class="hs-comment">-- this 'Id' has to be applied to before it doesn any meaningful work.</span><span>
</span><span id="line-357"></span><span class="annot"><a href="GHC.Types.Id.Info.html#arityInfo"><span class="hs-identifier hs-type">arityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span>
</span><span id="line-358"></span><span id="arityInfo"><span class="annot"><span class="annottext">arityInfo :: IdInfo -&gt; Int
</span><a href="GHC.Types.Id.Info.html#arityInfo"><span class="hs-identifier hs-var hs-var">arityInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BitField -&gt; Int
</span><a href="GHC.Types.Id.Info.html#bitfieldGetArityInfo"><span class="hs-identifier hs-var">bitfieldGetArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; Int) -&gt; (IdInfo -&gt; BitField) -&gt; IdInfo -&gt; Int
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span>
</span><span id="line-359"></span><span>
</span><span id="line-360"></span><span class="hs-comment">-- | 'Id' CAF info</span><span>
</span><span id="line-361"></span><span class="annot"><a href="GHC.Types.Id.Info.html#cafInfo"><span class="hs-identifier hs-type">cafInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span>
</span><span id="line-362"></span><span id="cafInfo"><span class="annot"><span class="annottext">cafInfo :: IdInfo -&gt; CafInfo
</span><a href="GHC.Types.Id.Info.html#cafInfo"><span class="hs-identifier hs-var hs-var">cafInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BitField -&gt; CafInfo
</span><a href="GHC.Types.Id.Info.html#bitfieldGetCafInfo"><span class="hs-identifier hs-var">bitfieldGetCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; CafInfo) -&gt; (IdInfo -&gt; BitField) -&gt; IdInfo -&gt; CafInfo
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span>
</span><span id="line-363"></span><span>
</span><span id="line-364"></span><span class="hs-comment">-- | How this is called. This is the number of arguments to which a binding can</span><span>
</span><span id="line-365"></span><span class="hs-comment">-- be eta-expanded without losing any sharing. n &lt;=&gt; all calls have at least n</span><span>
</span><span id="line-366"></span><span class="hs-comment">-- arguments</span><span>
</span><span id="line-367"></span><span class="annot"><a href="GHC.Types.Id.Info.html#callArityInfo"><span class="hs-identifier hs-type">callArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span>
</span><span id="line-368"></span><span id="callArityInfo"><span class="annot"><span class="annottext">callArityInfo :: IdInfo -&gt; Int
</span><a href="GHC.Types.Id.Info.html#callArityInfo"><span class="hs-identifier hs-var hs-var">callArityInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BitField -&gt; Int
</span><a href="GHC.Types.Id.Info.html#bitfieldGetCallArityInfo"><span class="hs-identifier hs-var">bitfieldGetCallArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; Int) -&gt; (IdInfo -&gt; BitField) -&gt; IdInfo -&gt; Int
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span>
</span><span id="line-369"></span><span>
</span><span id="line-370"></span><span class="hs-comment">-- Setters</span><span>
</span><span id="line-371"></span><span>
</span><span id="line-372"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setRuleInfo"><span class="hs-identifier hs-type">setRuleInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-373"></span><span id="setRuleInfo"><span class="annot"><span class="annottext">setRuleInfo :: IdInfo -&gt; RuleInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setRuleInfo"><span class="hs-identifier hs-var hs-var">setRuleInfo</span></a></span></span><span>       </span><span id="local-6989586621680808386"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808386"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808385"><span class="annot"><span class="annottext">RuleInfo
</span><a href="#local-6989586621680808385"><span class="hs-identifier hs-var">sp</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RuleInfo
</span><a href="#local-6989586621680808385"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">RuleInfo -&gt; IdInfo -&gt; IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808386"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">ruleInfo :: RuleInfo
</span><a href="GHC.Types.Id.Info.html#ruleInfo"><span class="hs-identifier hs-var">ruleInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RuleInfo
</span><a href="#local-6989586621680808385"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-374"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setInlinePragInfo"><span class="hs-identifier hs-type">setInlinePragInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-375"></span><span id="setInlinePragInfo"><span class="annot"><span class="annottext">setInlinePragInfo :: IdInfo -&gt; InlinePragma -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setInlinePragInfo"><span class="hs-identifier hs-var hs-var">setInlinePragInfo</span></a></span></span><span> </span><span id="local-6989586621680808384"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808384"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808383"><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680808383"><span class="hs-identifier hs-var">pr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680808383"><span class="hs-identifier hs-var">pr</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma -&gt; IdInfo -&gt; IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808384"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">inlinePragInfo :: InlinePragma
</span><a href="GHC.Types.Id.Info.html#inlinePragInfo"><span class="hs-identifier hs-var">inlinePragInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680808383"><span class="hs-identifier hs-var">pr</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-376"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setOccInfo"><span class="hs-identifier hs-type">setOccInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#OccInfo"><span class="hs-identifier hs-type">OccInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-377"></span><span id="setOccInfo"><span class="annot"><span class="annottext">setOccInfo :: IdInfo -&gt; OccInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setOccInfo"><span class="hs-identifier hs-var hs-var">setOccInfo</span></a></span></span><span>        </span><span id="local-6989586621680808382"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808382"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808381"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808381"><span class="hs-identifier hs-var">oc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808381"><span class="hs-identifier hs-var">oc</span></a></span><span> </span><span class="annot"><span class="annottext">OccInfo -&gt; IdInfo -&gt; IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808382"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">occInfo :: OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var">occInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808381"><span class="hs-identifier hs-var">oc</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-378"></span><span>        </span><span class="hs-comment">-- Try to avoid space leaks by seq'ing</span><span>
</span><span id="line-379"></span><span>
</span><span id="line-380"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setUnfoldingInfo"><span class="hs-identifier hs-type">setUnfoldingInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-381"></span><span id="setUnfoldingInfo"><span class="annot"><span class="annottext">setUnfoldingInfo :: IdInfo -&gt; Unfolding -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setUnfoldingInfo"><span class="hs-identifier hs-var hs-var">setUnfoldingInfo</span></a></span></span><span> </span><span id="local-6989586621680808380"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808380"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808379"><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808379"><span class="hs-identifier hs-var">uf</span></a></span></span><span>
</span><span id="line-382"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-comment">-- We don't seq the unfolding, as we generate intermediate</span><span>
</span><span id="line-383"></span><span>    </span><span class="hs-comment">-- unfoldings which are just thrown away, so evaluating them is a</span><span>
</span><span id="line-384"></span><span>    </span><span class="hs-comment">-- waste of time.</span><span>
</span><span id="line-385"></span><span>    </span><span class="hs-comment">-- seqUnfolding uf `seq`</span><span>
</span><span id="line-386"></span><span>    </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808380"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">unfoldingInfo :: Unfolding
</span><a href="GHC.Types.Id.Info.html#unfoldingInfo"><span class="hs-identifier hs-var">unfoldingInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808379"><span class="hs-identifier hs-var">uf</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-387"></span><span>
</span><span id="line-388"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setArityInfo"><span class="hs-identifier hs-type">setArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-389"></span><span id="setArityInfo"><span class="annot"><span class="annottext">setArityInfo :: IdInfo -&gt; Int -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setArityInfo"><span class="hs-identifier hs-var hs-var">setArityInfo</span></a></span></span><span> </span><span id="local-6989586621680808378"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808378"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808377"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808377"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-390"></span><span>    </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808378"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetArityInfo"><span class="hs-identifier hs-var">bitfieldSetArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808377"><span class="hs-identifier hs-var">ar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808378"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-391"></span><span>
</span><span id="line-392"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setCallArityInfo"><span class="hs-identifier hs-type">setCallArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-type">ArityInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-393"></span><span id="setCallArityInfo"><span class="annot"><span class="annottext">setCallArityInfo :: IdInfo -&gt; Int -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setCallArityInfo"><span class="hs-identifier hs-var hs-var">setCallArityInfo</span></a></span></span><span> </span><span id="local-6989586621680808376"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808376"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808375"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808375"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-394"></span><span>    </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808376"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetCallArityInfo"><span class="hs-identifier hs-var">bitfieldSetCallArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808375"><span class="hs-identifier hs-var">ar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808376"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-395"></span><span>
</span><span id="line-396"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setCafInfo"><span class="hs-identifier hs-type">setCafInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-397"></span><span id="setCafInfo"><span class="annot"><span class="annottext">setCafInfo :: IdInfo -&gt; CafInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setCafInfo"><span class="hs-identifier hs-var hs-var">setCafInfo</span></a></span></span><span> </span><span id="local-6989586621680808374"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808374"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808373"><span class="annot"><span class="annottext">CafInfo
</span><a href="#local-6989586621680808373"><span class="hs-identifier hs-var">caf</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-398"></span><span>    </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808374"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CafInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetCafInfo"><span class="hs-identifier hs-var">bitfieldSetCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="#local-6989586621680808373"><span class="hs-identifier hs-var">caf</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808374"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-399"></span><span>
</span><span id="line-400"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setLFInfo"><span class="hs-identifier hs-type">setLFInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LambdaFormInfo"><span class="hs-identifier hs-type">LambdaFormInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-401"></span><span id="setLFInfo"><span class="annot"><span class="annottext">setLFInfo :: IdInfo -&gt; LambdaFormInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setLFInfo"><span class="hs-identifier hs-var hs-var">setLFInfo</span></a></span></span><span> </span><span id="local-6989586621680808372"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808372"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808371"><span class="annot"><span class="annottext">LambdaFormInfo
</span><a href="#local-6989586621680808371"><span class="hs-identifier hs-var">lf</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808372"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">lfInfo :: Maybe LambdaFormInfo
</span><a href="GHC.Types.Id.Info.html#lfInfo"><span class="hs-identifier hs-var">lfInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LambdaFormInfo -&gt; Maybe LambdaFormInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">LambdaFormInfo
</span><a href="#local-6989586621680808371"><span class="hs-identifier hs-var">lf</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-402"></span><span>
</span><span id="line-403"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setOneShotInfo"><span class="hs-identifier hs-type">setOneShotInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#OneShotInfo"><span class="hs-identifier hs-type">OneShotInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-404"></span><span id="setOneShotInfo"><span class="annot"><span class="annottext">setOneShotInfo :: IdInfo -&gt; OneShotInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setOneShotInfo"><span class="hs-identifier hs-var hs-var">setOneShotInfo</span></a></span></span><span> </span><span id="local-6989586621680808370"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808370"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808369"><span class="annot"><span class="annottext">OneShotInfo
</span><a href="#local-6989586621680808369"><span class="hs-identifier hs-var">lb</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-405"></span><span>    </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808370"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OneShotInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetOneShotInfo"><span class="hs-identifier hs-var">bitfieldSetOneShotInfo</span></a></span><span> </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="#local-6989586621680808369"><span class="hs-identifier hs-var">lb</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808370"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-406"></span><span>
</span><span id="line-407"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setDemandInfo"><span class="hs-identifier hs-type">setDemandInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html#Demand"><span class="hs-identifier hs-type">Demand</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-408"></span><span id="setDemandInfo"><span class="annot"><span class="annottext">setDemandInfo :: IdInfo -&gt; Demand -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setDemandInfo"><span class="hs-identifier hs-var hs-var">setDemandInfo</span></a></span></span><span> </span><span id="local-6989586621680808368"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808368"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808367"><span class="annot"><span class="annottext">Demand
</span><a href="#local-6989586621680808367"><span class="hs-identifier hs-var">dd</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand
</span><a href="#local-6989586621680808367"><span class="hs-identifier hs-var">dd</span></a></span><span> </span><span class="annot"><span class="annottext">Demand -&gt; IdInfo -&gt; IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808368"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">demandInfo :: Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand
</span><a href="#local-6989586621680808367"><span class="hs-identifier hs-var">dd</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-409"></span><span>
</span><span id="line-410"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setStrictnessInfo"><span class="hs-identifier hs-type">setStrictnessInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html#StrictSig"><span class="hs-identifier hs-type">StrictSig</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-411"></span><span id="setStrictnessInfo"><span class="annot"><span class="annottext">setStrictnessInfo :: IdInfo -&gt; StrictSig -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setStrictnessInfo"><span class="hs-identifier hs-var hs-var">setStrictnessInfo</span></a></span></span><span> </span><span id="local-6989586621680808366"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808366"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808365"><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680808365"><span class="hs-identifier hs-var">dd</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680808365"><span class="hs-identifier hs-var">dd</span></a></span><span> </span><span class="annot"><span class="annottext">StrictSig -&gt; IdInfo -&gt; IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808366"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">strictnessInfo :: StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var">strictnessInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680808365"><span class="hs-identifier hs-var">dd</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-412"></span><span>
</span><span id="line-413"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setCprInfo"><span class="hs-identifier hs-type">setCprInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Cpr.html#CprSig"><span class="hs-identifier hs-type">CprSig</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-414"></span><span id="setCprInfo"><span class="annot"><span class="annottext">setCprInfo :: IdInfo -&gt; CprSig -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setCprInfo"><span class="hs-identifier hs-var hs-var">setCprInfo</span></a></span></span><span> </span><span id="local-6989586621680808364"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808364"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808363"><span class="annot"><span class="annottext">CprSig
</span><a href="#local-6989586621680808363"><span class="hs-identifier hs-var">cpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CprSig
</span><a href="#local-6989586621680808363"><span class="hs-identifier hs-var">cpr</span></a></span><span> </span><span class="annot"><span class="annottext">CprSig -&gt; IdInfo -&gt; IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808364"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cprInfo :: CprSig
</span><a href="GHC.Types.Id.Info.html#cprInfo"><span class="hs-identifier hs-var">cprInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CprSig
</span><a href="#local-6989586621680808363"><span class="hs-identifier hs-var">cpr</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-415"></span><span>
</span><span id="line-416"></span><span class="hs-comment">-- | Basic 'IdInfo' that carries no useful information whatsoever</span><span>
</span><span id="line-417"></span><span class="annot"><a href="GHC.Types.Id.Info.html#vanillaIdInfo"><span class="hs-identifier hs-type">vanillaIdInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-418"></span><span id="vanillaIdInfo"><span class="annot"><span class="annottext">vanillaIdInfo :: IdInfo
</span><a href="GHC.Types.Id.Info.html#vanillaIdInfo"><span class="hs-identifier hs-var hs-var">vanillaIdInfo</span></a></span></span><span>
</span><span id="line-419"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo :: RuleInfo
-&gt; Unfolding
-&gt; InlinePragma
-&gt; OccInfo
-&gt; StrictSig
-&gt; CprSig
-&gt; Demand
-&gt; BitField
-&gt; Maybe LambdaFormInfo
-&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-420"></span><span>            </span><span class="annot"><span class="annottext">ruleInfo :: RuleInfo
</span><a href="GHC.Types.Id.Info.html#ruleInfo"><span class="hs-identifier hs-var">ruleInfo</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RuleInfo
</span><a href="GHC.Types.Id.Info.html#emptyRuleInfo"><span class="hs-identifier hs-var">emptyRuleInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-421"></span><span>            </span><span class="annot"><span class="annottext">unfoldingInfo :: Unfolding
</span><a href="GHC.Types.Id.Info.html#unfoldingInfo"><span class="hs-identifier hs-var">unfoldingInfo</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="GHC.Core.html#noUnfolding"><span class="hs-identifier hs-var">noUnfolding</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-422"></span><span>            </span><span class="annot"><span class="annottext">inlinePragInfo :: InlinePragma
</span><a href="GHC.Types.Id.Info.html#inlinePragInfo"><span class="hs-identifier hs-var">inlinePragInfo</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="GHC.Types.Basic.html#defaultInlinePragma"><span class="hs-identifier hs-var">defaultInlinePragma</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-423"></span><span>            </span><span class="annot"><span class="annottext">occInfo :: OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var">occInfo</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="GHC.Types.Basic.html#noOccInfo"><span class="hs-identifier hs-var">noOccInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-424"></span><span>            </span><span class="annot"><span class="annottext">demandInfo :: Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand
</span><a href="GHC.Types.Demand.html#topDmd"><span class="hs-identifier hs-var">topDmd</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-425"></span><span>            </span><span class="annot"><span class="annottext">strictnessInfo :: StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var">strictnessInfo</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StrictSig
</span><a href="GHC.Types.Demand.html#nopSig"><span class="hs-identifier hs-var">nopSig</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-426"></span><span>            </span><span class="annot"><span class="annottext">cprInfo :: CprSig
</span><a href="GHC.Types.Id.Info.html#cprInfo"><span class="hs-identifier hs-var">cprInfo</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CprSig
</span><a href="GHC.Types.Cpr.html#topCprSig"><span class="hs-identifier hs-var">topCprSig</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-427"></span><span>            </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CafInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetCafInfo"><span class="hs-identifier hs-var">bitfieldSetCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#vanillaCafInfo"><span class="hs-identifier hs-var">vanillaCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; BitField) -&gt; BitField -&gt; BitField
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-428"></span><span>                                  </span><span class="annot"><span class="annottext">Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetArityInfo"><span class="hs-identifier hs-var">bitfieldSetArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.Types.Id.Info.html#unknownArity"><span class="hs-identifier hs-var">unknownArity</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; BitField) -&gt; BitField -&gt; BitField
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-429"></span><span>                                  </span><span class="annot"><span class="annottext">Int -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetCallArityInfo"><span class="hs-identifier hs-var">bitfieldSetCallArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.Types.Id.Info.html#unknownArity"><span class="hs-identifier hs-var">unknownArity</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; BitField) -&gt; BitField -&gt; BitField
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-430"></span><span>                                  </span><span class="annot"><span class="annottext">OneShotInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetOneShotInfo"><span class="hs-identifier hs-var">bitfieldSetOneShotInfo</span></a></span><span> </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="GHC.Types.Basic.html#NoOneShotInfo"><span class="hs-identifier hs-var">NoOneShotInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; BitField) -&gt; BitField -&gt; BitField
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-431"></span><span>                                  </span><span class="annot"><span class="annottext">LevityInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetLevityInfo"><span class="hs-identifier hs-var">bitfieldSetLevityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NoLevityInfo"><span class="hs-identifier hs-var">NoLevityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">(BitField -&gt; BitField) -&gt; BitField -&gt; BitField
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-432"></span><span>                                  </span><span class="annot"><span class="annottext">BitField
</span><a href="GHC.Types.Id.Info.html#emptyBitField"><span class="hs-identifier hs-var">emptyBitField</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-433"></span><span>            </span><span class="annot"><span class="annottext">lfInfo :: Maybe LambdaFormInfo
</span><a href="GHC.Types.Id.Info.html#lfInfo"><span class="hs-identifier hs-var">lfInfo</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe LambdaFormInfo
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-434"></span><span>           </span><span class="hs-special">}</span><span>
</span><span id="line-435"></span><span>
</span><span id="line-436"></span><span class="hs-comment">-- | More informative 'IdInfo' we can use when we know the 'Id' has no CAF references</span><span>
</span><span id="line-437"></span><span class="annot"><a href="GHC.Types.Id.Info.html#noCafIdInfo"><span class="hs-identifier hs-type">noCafIdInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-438"></span><span id="noCafIdInfo"><span class="annot"><span class="annottext">noCafIdInfo :: IdInfo
</span><a href="GHC.Types.Id.Info.html#noCafIdInfo"><span class="hs-identifier hs-var hs-var">noCafIdInfo</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="GHC.Types.Id.Info.html#vanillaIdInfo"><span class="hs-identifier hs-var">vanillaIdInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; CafInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setCafInfo"><span class="hs-operator hs-var">`setCafInfo`</span></a></span><span>    </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#NoCafRefs"><span class="hs-identifier hs-var">NoCafRefs</span></a></span><span>
</span><span id="line-439"></span><span>        </span><span class="hs-comment">-- Used for built-in type Ids in GHC.Types.Id.Make.</span><span>
</span><span id="line-440"></span><span>
</span><span id="line-441"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection[arity-IdInfo]{Arity info about an @Id@}
*                                                                      *
************************************************************************

For locally-defined Ids, the code generator maintains its own notion
of their arities; so it should not be asking...  (but other things
besides the code-generator need arity info!)
-}</span><span>
</span><span id="line-452"></span><span>
</span><span id="line-453"></span><span class="hs-comment">-- | Arity Information</span><span>
</span><span id="line-454"></span><span class="hs-comment">--</span><span>
</span><span id="line-455"></span><span class="hs-comment">-- An 'ArityInfo' of @n@ tells us that partial application of this</span><span>
</span><span id="line-456"></span><span class="hs-comment">-- 'Id' to up to @n-1@ value arguments does essentially no work.</span><span>
</span><span id="line-457"></span><span class="hs-comment">--</span><span>
</span><span id="line-458"></span><span class="hs-comment">-- That is not necessarily the same as saying that it has @n@ leading</span><span>
</span><span id="line-459"></span><span class="hs-comment">-- lambdas, because coerces may get in the way.</span><span>
</span><span id="line-460"></span><span class="hs-comment">--</span><span>
</span><span id="line-461"></span><span class="hs-comment">-- The arity might increase later in the compilation process, if</span><span>
</span><span id="line-462"></span><span class="hs-comment">-- an extra lambda floats up to the binding site.</span><span>
</span><span id="line-463"></span><span class="hs-keyword">type</span><span> </span><span id="ArityInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#ArityInfo"><span class="hs-identifier hs-var">ArityInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span>
</span><span id="line-464"></span><span>
</span><span id="line-465"></span><span class="hs-comment">-- | It is always safe to assume that an 'Id' has an arity of 0</span><span>
</span><span id="line-466"></span><span class="annot"><a href="GHC.Types.Id.Info.html#unknownArity"><span class="hs-identifier hs-type">unknownArity</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span>
</span><span id="line-467"></span><span id="unknownArity"><span class="annot"><span class="annottext">unknownArity :: Int
</span><a href="GHC.Types.Id.Info.html#unknownArity"><span class="hs-identifier hs-var hs-var">unknownArity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-468"></span><span>
</span><span id="line-469"></span><span class="annot"><a href="GHC.Types.Id.Info.html#ppArityInfo"><span class="hs-identifier hs-type">ppArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-470"></span><span id="ppArityInfo"><span class="annot"><span class="annottext">ppArityInfo :: Int -&gt; SDoc
</span><a href="GHC.Types.Id.Info.html#ppArityInfo"><span class="hs-identifier hs-var hs-var">ppArityInfo</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-471"></span><span class="annot"><a href="GHC.Types.Id.Info.html#ppArityInfo"><span class="hs-identifier hs-var">ppArityInfo</span></a></span><span> </span><span id="local-6989586621680808354"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808354"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Arity&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808354"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-472"></span><span>
</span><span id="line-473"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Inline-pragma information}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-480"></span><span>
</span><span id="line-481"></span><span class="hs-comment">-- | Inline Pragma Information</span><span>
</span><span id="line-482"></span><span class="hs-comment">--</span><span>
</span><span id="line-483"></span><span class="hs-comment">-- Tells when the inlining is active.</span><span>
</span><span id="line-484"></span><span class="hs-comment">-- When it is active the thing may be inlined, depending on how</span><span>
</span><span id="line-485"></span><span class="hs-comment">-- big it is.</span><span>
</span><span id="line-486"></span><span class="hs-comment">--</span><span>
</span><span id="line-487"></span><span class="hs-comment">-- If there was an @INLINE@ pragma, then as a separate matter, the</span><span>
</span><span id="line-488"></span><span class="hs-comment">-- RHS will have been made to look small with a Core inline 'Note'</span><span>
</span><span id="line-489"></span><span class="hs-comment">--</span><span>
</span><span id="line-490"></span><span class="hs-comment">-- The default 'InlinePragInfo' is 'AlwaysActive', so the info serves</span><span>
</span><span id="line-491"></span><span class="hs-comment">-- entirely as a way to inhibit inlining until we want it</span><span>
</span><span id="line-492"></span><span class="hs-keyword">type</span><span> </span><span id="InlinePragInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#InlinePragInfo"><span class="hs-identifier hs-var">InlinePragInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span>
</span><span id="line-493"></span><span>
</span><span id="line-494"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
               Strictness
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-501"></span><span>
</span><span id="line-502"></span><span class="annot"><a href="GHC.Types.Id.Info.html#pprStrictness"><span class="hs-identifier hs-type">pprStrictness</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html#StrictSig"><span class="hs-identifier hs-type">StrictSig</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-503"></span><span id="pprStrictness"><span class="annot"><span class="annottext">pprStrictness :: StrictSig -&gt; SDoc
</span><a href="GHC.Types.Id.Info.html#pprStrictness"><span class="hs-identifier hs-var hs-var">pprStrictness</span></a></span></span><span> </span><span id="local-6989586621680808352"><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680808352"><span class="hs-identifier hs-var">sig</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StrictSig -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680808352"><span class="hs-identifier hs-var">sig</span></a></span><span>
</span><span id="line-504"></span><span>
</span><span id="line-505"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
        RuleInfo
*                                                                      *
************************************************************************

Note [Specialisations and RULES in IdInfo]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generally speaking, a GlobalId has an *empty* RuleInfo.  All their
RULES are contained in the globally-built rule-base.  In principle,
one could attach the to M.f the RULES for M.f that are defined in M.
But we don't do that for instance declarations and so we just treat
them all uniformly.

The EXCEPTION is PrimOpIds, which do have rules in their IdInfo. That is
just for convenience really.

However, LocalIds may have non-empty RuleInfo.  We treat them
differently because:
  a) they might be nested, in which case a global table won't work
  b) the RULE might mention free variables, which we use to keep things alive

In GHC.Iface.Tidy, when the LocalId becomes a GlobalId, its RULES are stripped off
and put in the global list.
-}</span><span>
</span><span id="line-531"></span><span>
</span><span id="line-532"></span><span class="hs-comment">-- | Rule Information</span><span>
</span><span id="line-533"></span><span class="hs-comment">--</span><span>
</span><span id="line-534"></span><span class="hs-comment">-- Records the specializations of this 'Id' that we know about</span><span>
</span><span id="line-535"></span><span class="hs-comment">-- in the form of rewrite 'CoreRule's that target them</span><span>
</span><span id="line-536"></span><span class="hs-keyword">data</span><span> </span><span id="RuleInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-var">RuleInfo</span></a></span></span><span>
</span><span id="line-537"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="RuleInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-var">RuleInfo</span></a></span></span><span>
</span><span id="line-538"></span><span>        </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#CoreRule"><span class="hs-identifier hs-type">CoreRule</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-539"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>         </span><span class="hs-comment">-- Locally-defined free vars of *both* LHS and RHS</span><span>
</span><span id="line-540"></span><span>                        </span><span class="hs-comment">-- of rules.  I don't think it needs to include the</span><span>
</span><span id="line-541"></span><span>                        </span><span class="hs-comment">-- ru_fn though.</span><span>
</span><span id="line-542"></span><span>                        </span><span class="hs-comment">-- Note [Rule dependency info] in &quot;GHC.Core.Opt.OccurAnal&quot;</span><span>
</span><span id="line-543"></span><span>
</span><span id="line-544"></span><span class="hs-comment">-- | Assume that no specializations exist: always safe</span><span>
</span><span id="line-545"></span><span class="annot"><a href="GHC.Types.Id.Info.html#emptyRuleInfo"><span class="hs-identifier hs-type">emptyRuleInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span>
</span><span id="line-546"></span><span id="emptyRuleInfo"><span class="annot"><span class="annottext">emptyRuleInfo :: RuleInfo
</span><a href="GHC.Types.Id.Info.html#emptyRuleInfo"><span class="hs-identifier hs-var hs-var">emptyRuleInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CoreRule] -&gt; DVarSet -&gt; RuleInfo
</span><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-var">RuleInfo</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="GHC.Types.Var.Set.html#emptyDVarSet"><span class="hs-identifier hs-var">emptyDVarSet</span></a></span><span>
</span><span id="line-547"></span><span>
</span><span id="line-548"></span><span class="annot"><a href="GHC.Types.Id.Info.html#isEmptyRuleInfo"><span class="hs-identifier hs-type">isEmptyRuleInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-549"></span><span id="isEmptyRuleInfo"><span class="annot"><span class="annottext">isEmptyRuleInfo :: RuleInfo -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#isEmptyRuleInfo"><span class="hs-identifier hs-var hs-var">isEmptyRuleInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span id="local-6989586621680808349"><span class="annot"><span class="annottext">[CoreRule]
</span><a href="#local-6989586621680808349"><span class="hs-identifier hs-var">rs</span></a></span></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CoreRule] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreRule]
</span><a href="#local-6989586621680808349"><span class="hs-identifier hs-var">rs</span></a></span><span>
</span><span id="line-550"></span><span>
</span><span id="line-551"></span><span class="hs-comment">-- | Retrieve the locally-defined free variables of both the left and</span><span>
</span><span id="line-552"></span><span class="hs-comment">-- right hand sides of the specialization rules</span><span>
</span><span id="line-553"></span><span class="annot"><a href="GHC.Types.Id.Info.html#ruleInfoFreeVars"><span class="hs-identifier hs-type">ruleInfoFreeVars</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DVarSet"><span class="hs-identifier hs-type">DVarSet</span></a></span><span>
</span><span id="line-554"></span><span id="ruleInfoFreeVars"><span class="annot"><span class="annottext">ruleInfoFreeVars :: RuleInfo -&gt; DVarSet
</span><a href="GHC.Types.Id.Info.html#ruleInfoFreeVars"><span class="hs-identifier hs-var hs-var">ruleInfoFreeVars</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreRule]
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680808347"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680808347"><span class="hs-identifier hs-var">fvs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680808347"><span class="hs-identifier hs-var">fvs</span></a></span><span>
</span><span id="line-555"></span><span>
</span><span id="line-556"></span><span class="annot"><a href="GHC.Types.Id.Info.html#ruleInfoRules"><span class="hs-identifier hs-type">ruleInfoRules</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#CoreRule"><span class="hs-identifier hs-type">CoreRule</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-557"></span><span id="ruleInfoRules"><span class="annot"><span class="annottext">ruleInfoRules :: RuleInfo -&gt; [CoreRule]
</span><a href="GHC.Types.Id.Info.html#ruleInfoRules"><span class="hs-identifier hs-var hs-var">ruleInfoRules</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span id="local-6989586621680808346"><span class="annot"><span class="annottext">[CoreRule]
</span><a href="#local-6989586621680808346"><span class="hs-identifier hs-var">rules</span></a></span></span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CoreRule]
</span><a href="#local-6989586621680808346"><span class="hs-identifier hs-var">rules</span></a></span><span>
</span><span id="line-558"></span><span>
</span><span id="line-559"></span><span class="hs-comment">-- | Change the name of the function the rule is keyed on all of the 'CoreRule's</span><span>
</span><span id="line-560"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setRuleInfoHead"><span class="hs-identifier hs-type">setRuleInfoHead</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span>
</span><span id="line-561"></span><span id="setRuleInfoHead"><span class="annot"><span class="annottext">setRuleInfoHead :: Name -&gt; RuleInfo -&gt; RuleInfo
</span><a href="GHC.Types.Id.Info.html#setRuleInfoHead"><span class="hs-identifier hs-var hs-var">setRuleInfoHead</span></a></span></span><span> </span><span id="local-6989586621680808345"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680808345"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-type">RuleInfo</span></a></span><span> </span><span id="local-6989586621680808344"><span class="annot"><span class="annottext">[CoreRule]
</span><a href="#local-6989586621680808344"><span class="hs-identifier hs-var">rules</span></a></span></span><span> </span><span id="local-6989586621680808343"><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680808343"><span class="hs-identifier hs-var">fvs</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-562"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CoreRule] -&gt; DVarSet -&gt; RuleInfo
</span><a href="GHC.Types.Id.Info.html#RuleInfo"><span class="hs-identifier hs-var">RuleInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CoreRule -&gt; CoreRule) -&gt; [CoreRule] -&gt; [CoreRule]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; CoreRule -&gt; CoreRule
</span><a href="GHC.Core.html#setRuleIdName"><span class="hs-identifier hs-var">setRuleIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680808345"><span class="hs-identifier hs-var">fn</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreRule]
</span><a href="#local-6989586621680808344"><span class="hs-identifier hs-var">rules</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DVarSet
</span><a href="#local-6989586621680808343"><span class="hs-identifier hs-var">fvs</span></a></span><span>
</span><span id="line-563"></span><span>
</span><span id="line-564"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection[CG-IdInfo]{Code generator-related information}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-571"></span><span>
</span><span id="line-572"></span><span class="hs-comment">-- CafInfo is used to build Static Reference Tables (see simplStg/SRT.hs).</span><span>
</span><span id="line-573"></span><span>
</span><span id="line-574"></span><span class="hs-comment">-- | Constant applicative form Information</span><span>
</span><span id="line-575"></span><span class="hs-comment">--</span><span>
</span><span id="line-576"></span><span class="hs-comment">-- Records whether an 'Id' makes Constant Applicative Form references</span><span>
</span><span id="line-577"></span><span class="hs-keyword">data</span><span> </span><span id="CafInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-var">CafInfo</span></a></span></span><span>
</span><span id="line-578"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span id="MayHaveCafRefs"><span class="annot"><a href="GHC.Types.Id.Info.html#MayHaveCafRefs"><span class="hs-identifier hs-var">MayHaveCafRefs</span></a></span></span><span>                </span><span class="hs-comment">-- ^ Indicates that the 'Id' is for either:</span><span>
</span><span id="line-579"></span><span>                                        </span><span class="hs-comment">--</span><span>
</span><span id="line-580"></span><span>                                        </span><span class="hs-comment">-- 1. A function or static constructor</span><span>
</span><span id="line-581"></span><span>                                        </span><span class="hs-comment">--    that refers to one or more CAFs, or</span><span>
</span><span id="line-582"></span><span>                                        </span><span class="hs-comment">--</span><span>
</span><span id="line-583"></span><span>                                        </span><span class="hs-comment">-- 2. A real live CAF</span><span>
</span><span id="line-584"></span><span>
</span><span id="line-585"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="NoCafRefs"><span class="annot"><a href="GHC.Types.Id.Info.html#NoCafRefs"><span class="hs-identifier hs-var">NoCafRefs</span></a></span></span><span>                     </span><span class="hs-comment">-- ^ A function or static constructor</span><span>
</span><span id="line-586"></span><span>                                        </span><span class="hs-comment">-- that refers to no CAFs.</span><span>
</span><span id="line-587"></span><span>        </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680808338"><span id="local-6989586621680808340"><span class="annot"><span class="annottext">CafInfo -&gt; CafInfo -&gt; Bool
(CafInfo -&gt; CafInfo -&gt; Bool)
-&gt; (CafInfo -&gt; CafInfo -&gt; Bool) -&gt; Eq CafInfo
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: CafInfo -&gt; CafInfo -&gt; Bool
$c/= :: CafInfo -&gt; CafInfo -&gt; Bool
== :: CafInfo -&gt; CafInfo -&gt; Bool
$c== :: CafInfo -&gt; CafInfo -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680808319"><span id="local-6989586621680808321"><span id="local-6989586621680808324"><span id="local-6989586621680808327"><span id="local-6989586621680808330"><span id="local-6989586621680808332"><span id="local-6989586621680808334"><span class="annot"><span class="annottext">Eq CafInfo
Eq CafInfo
-&gt; (CafInfo -&gt; CafInfo -&gt; Ordering)
-&gt; (CafInfo -&gt; CafInfo -&gt; Bool)
-&gt; (CafInfo -&gt; CafInfo -&gt; Bool)
-&gt; (CafInfo -&gt; CafInfo -&gt; Bool)
-&gt; (CafInfo -&gt; CafInfo -&gt; Bool)
-&gt; (CafInfo -&gt; CafInfo -&gt; CafInfo)
-&gt; (CafInfo -&gt; CafInfo -&gt; CafInfo)
-&gt; Ord CafInfo
CafInfo -&gt; CafInfo -&gt; Bool
CafInfo -&gt; CafInfo -&gt; Ordering
CafInfo -&gt; CafInfo -&gt; CafInfo
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: CafInfo -&gt; CafInfo -&gt; CafInfo
$cmin :: CafInfo -&gt; CafInfo -&gt; CafInfo
max :: CafInfo -&gt; CafInfo -&gt; CafInfo
$cmax :: CafInfo -&gt; CafInfo -&gt; CafInfo
&gt;= :: CafInfo -&gt; CafInfo -&gt; Bool
$c&gt;= :: CafInfo -&gt; CafInfo -&gt; Bool
&gt; :: CafInfo -&gt; CafInfo -&gt; Bool
$c&gt; :: CafInfo -&gt; CafInfo -&gt; Bool
&lt;= :: CafInfo -&gt; CafInfo -&gt; Bool
$c&lt;= :: CafInfo -&gt; CafInfo -&gt; Bool
&lt; :: CafInfo -&gt; CafInfo -&gt; Bool
$c&lt; :: CafInfo -&gt; CafInfo -&gt; Bool
compare :: CafInfo -&gt; CafInfo -&gt; Ordering
$ccompare :: CafInfo -&gt; CafInfo -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-588"></span><span>
</span><span id="line-589"></span><span class="hs-comment">-- | Assumes that the 'Id' has CAF references: definitely safe</span><span>
</span><span id="line-590"></span><span class="annot"><a href="GHC.Types.Id.Info.html#vanillaCafInfo"><span class="hs-identifier hs-type">vanillaCafInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span>
</span><span id="line-591"></span><span id="vanillaCafInfo"><span class="annot"><span class="annottext">vanillaCafInfo :: CafInfo
</span><a href="GHC.Types.Id.Info.html#vanillaCafInfo"><span class="hs-identifier hs-var hs-var">vanillaCafInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#MayHaveCafRefs"><span class="hs-identifier hs-var">MayHaveCafRefs</span></a></span><span>
</span><span id="line-592"></span><span>
</span><span id="line-593"></span><span class="annot"><a href="GHC.Types.Id.Info.html#mayHaveCafRefs"><span class="hs-identifier hs-type">mayHaveCafRefs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-594"></span><span id="mayHaveCafRefs"><span class="annot"><span class="annottext">mayHaveCafRefs :: CafInfo -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#mayHaveCafRefs"><span class="hs-identifier hs-var hs-var">mayHaveCafRefs</span></a></span></span><span>  </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#MayHaveCafRefs"><span class="hs-identifier hs-var">MayHaveCafRefs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-595"></span><span class="annot"><a href="GHC.Types.Id.Info.html#mayHaveCafRefs"><span class="hs-identifier hs-var">mayHaveCafRefs</span></a></span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-596"></span><span>
</span><span id="line-597"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680808315"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-598"></span><span>   </span><span id="local-6989586621680808314"><span class="annot"><span class="annottext">ppr :: CafInfo -&gt; SDoc
</span><a href="#local-6989586621680808314"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CafInfo -&gt; SDoc
</span><a href="GHC.Types.Id.Info.html#ppCafInfo"><span class="hs-identifier hs-var">ppCafInfo</span></a></span><span>
</span><span id="line-599"></span><span>
</span><span id="line-600"></span><span class="annot"><a href="GHC.Types.Id.Info.html#ppCafInfo"><span class="hs-identifier hs-type">ppCafInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#CafInfo"><span class="hs-identifier hs-type">CafInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-601"></span><span id="ppCafInfo"><span class="annot"><span class="annottext">ppCafInfo :: CafInfo -&gt; SDoc
</span><a href="GHC.Types.Id.Info.html#ppCafInfo"><span class="hs-identifier hs-var hs-var">ppCafInfo</span></a></span></span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#NoCafRefs"><span class="hs-identifier hs-var">NoCafRefs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;NoCafRefs&quot;</span></span><span>
</span><span id="line-602"></span><span class="annot"><a href="GHC.Types.Id.Info.html#ppCafInfo"><span class="hs-identifier hs-var">ppCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#MayHaveCafRefs"><span class="hs-identifier hs-var">MayHaveCafRefs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-603"></span><span>
</span><span id="line-604"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Bulk operations on IdInfo}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-611"></span><span>
</span><span id="line-612"></span><span class="hs-comment">-- | This is used to remove information on lambda binders that we have</span><span>
</span><span id="line-613"></span><span class="hs-comment">-- setup as part of a lambda group, assuming they will be applied all at once,</span><span>
</span><span id="line-614"></span><span class="hs-comment">-- but turn out to be part of an unsaturated lambda as in e.g:</span><span>
</span><span id="line-615"></span><span class="hs-comment">--</span><span>
</span><span id="line-616"></span><span class="hs-comment">-- &gt; (\x1. \x2. e) arg1</span><span>
</span><span id="line-617"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapLamInfo"><span class="hs-identifier hs-type">zapLamInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-618"></span><span id="zapLamInfo"><span class="annot"><span class="annottext">zapLamInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapLamInfo"><span class="hs-identifier hs-var hs-var">zapLamInfo</span></a></span></span><span> </span><span id="local-6989586621680808313"><span class="annot"><span class="annottext">info :: IdInfo
</span><a href="#local-6989586621680808313"><span class="hs-identifier hs-var">info</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">occInfo :: IdInfo -&gt; OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var">occInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680808312"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808312"><span class="hs-identifier hs-var">occ</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">demandInfo :: IdInfo -&gt; Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680808311"><span class="annot"><span class="annottext">Demand
</span><a href="#local-6989586621680808311"><span class="hs-identifier hs-var">demand</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-619"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">OccInfo -&gt; Bool
</span><a href="#local-6989586621680808310"><span class="hs-identifier hs-var">is_safe_occ</span></a></span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808312"><span class="hs-identifier hs-var">occ</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Demand -&gt; Bool
forall {s} {u}. JointDmd (Str s) (Use u) -&gt; Bool
</span><a href="#local-6989586621680808309"><span class="hs-identifier hs-var">is_safe_dmd</span></a></span><span> </span><span class="annot"><span class="annottext">Demand
</span><a href="#local-6989586621680808311"><span class="hs-identifier hs-var">demand</span></a></span><span>
</span><span id="line-620"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IdInfo
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-621"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-622"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808313"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">occInfo :: OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var">occInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808308"><span class="hs-identifier hs-var">safe_occ</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">demandInfo :: Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand
</span><a href="GHC.Types.Demand.html#topDmd"><span class="hs-identifier hs-var">topDmd</span></a></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-623"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-624"></span><span>        </span><span class="hs-comment">-- The &quot;unsafe&quot; occ info is the ones that say I'm not in a lambda</span><span>
</span><span id="line-625"></span><span>        </span><span class="hs-comment">-- because that might not be true for an unsaturated lambda</span><span>
</span><span id="line-626"></span><span>    </span><span id="local-6989586621680808310"><span class="annot"><span class="annottext">is_safe_occ :: OccInfo -&gt; Bool
</span><a href="#local-6989586621680808310"><span class="hs-identifier hs-var hs-var">is_safe_occ</span></a></span></span><span> </span><span id="local-6989586621680808307"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808307"><span class="hs-identifier hs-var">occ</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">OccInfo -&gt; Bool
</span><a href="GHC.Types.Basic.html#isAlwaysTailCalled"><span class="hs-identifier hs-var">isAlwaysTailCalled</span></a></span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808307"><span class="hs-identifier hs-var">occ</span></a></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-627"></span><span>    </span><span class="annot"><a href="#local-6989586621680808310"><span class="hs-identifier hs-var">is_safe_occ</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Basic.html#OneOcc"><span class="hs-identifier hs-type">OneOcc</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">occ_in_lam :: OccInfo -&gt; InsideLam
</span><a href="GHC.Types.Basic.html#occ_in_lam"><span class="hs-identifier hs-var">occ_in_lam</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InsideLam
</span><a href="GHC.Types.Basic.html#NotInsideLam"><span class="hs-identifier hs-var">NotInsideLam</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-628"></span><span>    </span><span class="annot"><a href="#local-6989586621680808310"><span class="hs-identifier hs-var">is_safe_occ</span></a></span><span> </span><span id="local-6989586621680808303"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808303"><span class="hs-identifier hs-var">_other</span></a></span></span><span>                                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-629"></span><span>
</span><span id="line-630"></span><span>    </span><span id="local-6989586621680808308"><span class="annot"><span class="annottext">safe_occ :: OccInfo
</span><a href="#local-6989586621680808308"><span class="hs-identifier hs-var hs-var">safe_occ</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808312"><span class="hs-identifier hs-var">occ</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-631"></span><span>                 </span><span class="annot"><a href="GHC.Types.Basic.html#OneOcc"><span class="hs-identifier hs-type">OneOcc</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808312"><span class="hs-identifier hs-var">occ</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">occ_in_lam :: InsideLam
</span><a href="GHC.Types.Basic.html#occ_in_lam"><span class="hs-identifier hs-var">occ_in_lam</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InsideLam
</span><a href="GHC.Types.Basic.html#IsInsideLam"><span class="hs-identifier hs-var">IsInsideLam</span></a></span><span>
</span><span id="line-632"></span><span>                                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">occ_tail :: TailCallInfo
</span><a href="GHC.Types.Basic.html#occ_tail"><span class="hs-identifier hs-var">occ_tail</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TailCallInfo
</span><a href="GHC.Types.Basic.html#NoTailCallInfo"><span class="hs-identifier hs-var">NoTailCallInfo</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-633"></span><span>                 </span><span class="annot"><a href="GHC.Types.Basic.html#IAmALoopBreaker"><span class="hs-identifier hs-type">IAmALoopBreaker</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>
</span><span id="line-634"></span><span>                          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808312"><span class="hs-identifier hs-var">occ</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">occ_tail :: TailCallInfo
</span><a href="GHC.Types.Basic.html#occ_tail"><span class="hs-identifier hs-var">occ_tail</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TailCallInfo
</span><a href="GHC.Types.Basic.html#NoTailCallInfo"><span class="hs-identifier hs-var">NoTailCallInfo</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-635"></span><span>                 </span><span id="local-6989586621680808298"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808298"><span class="hs-identifier hs-var">_other</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808312"><span class="hs-identifier hs-var">occ</span></a></span><span>
</span><span id="line-636"></span><span>
</span><span id="line-637"></span><span>    </span><span id="local-6989586621680808309"><span class="annot"><span class="annottext">is_safe_dmd :: JointDmd (Str s) (Use u) -&gt; Bool
</span><a href="#local-6989586621680808309"><span class="hs-identifier hs-var hs-var">is_safe_dmd</span></a></span></span><span> </span><span id="local-6989586621680808297"><span class="annot"><span class="annottext">JointDmd (Str s) (Use u)
</span><a href="#local-6989586621680808297"><span class="hs-identifier hs-var">dmd</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">JointDmd (Str s) (Use u) -&gt; Bool
forall {s} {u}. JointDmd (Str s) (Use u) -&gt; Bool
</span><a href="GHC.Types.Demand.html#isStrictDmd"><span class="hs-identifier hs-var">isStrictDmd</span></a></span><span> </span><span class="annot"><span class="annottext">JointDmd (Str s) (Use u)
</span><a href="#local-6989586621680808297"><span class="hs-identifier hs-var">dmd</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-638"></span><span>
</span><span id="line-639"></span><span class="hs-comment">-- | Remove all demand info on the 'IdInfo'</span><span>
</span><span id="line-640"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapDemandInfo"><span class="hs-identifier hs-type">zapDemandInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-641"></span><span id="zapDemandInfo"><span class="annot"><span class="annottext">zapDemandInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapDemandInfo"><span class="hs-identifier hs-var hs-var">zapDemandInfo</span></a></span></span><span> </span><span id="local-6989586621680808295"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808295"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808295"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">demandInfo :: Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand
</span><a href="GHC.Types.Demand.html#topDmd"><span class="hs-identifier hs-var">topDmd</span></a></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-642"></span><span>
</span><span id="line-643"></span><span class="hs-comment">-- | Remove usage (but not strictness) info on the 'IdInfo'</span><span>
</span><span id="line-644"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUsageInfo"><span class="hs-identifier hs-type">zapUsageInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-645"></span><span id="zapUsageInfo"><span class="annot"><span class="annottext">zapUsageInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapUsageInfo"><span class="hs-identifier hs-var hs-var">zapUsageInfo</span></a></span></span><span> </span><span id="local-6989586621680808294"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808294"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808294"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">demandInfo :: Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand -&gt; Demand
</span><a href="GHC.Types.Demand.html#zapUsageDemand"><span class="hs-identifier hs-var">zapUsageDemand</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var hs-var">demandInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808294"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-646"></span><span>
</span><span id="line-647"></span><span class="hs-comment">-- | Remove usage environment info from the strictness signature on the 'IdInfo'</span><span>
</span><span id="line-648"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUsageEnvInfo"><span class="hs-identifier hs-type">zapUsageEnvInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-649"></span><span id="zapUsageEnvInfo"><span class="annot"><span class="annottext">zapUsageEnvInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapUsageEnvInfo"><span class="hs-identifier hs-var hs-var">zapUsageEnvInfo</span></a></span></span><span> </span><span id="local-6989586621680808292"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808292"><span class="hs-identifier hs-var">info</span></a></span></span><span>
</span><span id="line-650"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">StrictSig -&gt; Bool
</span><a href="GHC.Types.Demand.html#hasDemandEnvSig"><span class="hs-identifier hs-var">hasDemandEnvSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var hs-var">strictnessInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808292"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-651"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808292"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">strictnessInfo :: StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var">strictnessInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StrictSig -&gt; StrictSig
</span><a href="GHC.Types.Demand.html#zapUsageEnvSig"><span class="hs-identifier hs-var">zapUsageEnvSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var hs-var">strictnessInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808292"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-652"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-653"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IdInfo
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-654"></span><span>
</span><span id="line-655"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUsedOnceInfo"><span class="hs-identifier hs-type">zapUsedOnceInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-656"></span><span id="zapUsedOnceInfo"><span class="annot"><span class="annottext">zapUsedOnceInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapUsedOnceInfo"><span class="hs-identifier hs-var hs-var">zapUsedOnceInfo</span></a></span></span><span> </span><span id="local-6989586621680808289"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808289"><span class="hs-identifier hs-var">info</span></a></span></span><span>
</span><span id="line-657"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(IdInfo -&gt; Maybe IdInfo) -&gt; IdInfo -&gt; Maybe IdInfo
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808289"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">strictnessInfo :: StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var">strictnessInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StrictSig -&gt; StrictSig
</span><a href="GHC.Types.Demand.html#zapUsedOnceSig"><span class="hs-identifier hs-var">zapUsedOnceSig</span></a></span><span>    </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var hs-var">strictnessInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808289"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-658"></span><span>                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">demandInfo :: Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var">demandInfo</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Demand -&gt; Demand
</span><a href="GHC.Types.Demand.html#zapUsedOnceDemand"><span class="hs-identifier hs-var">zapUsedOnceDemand</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; Demand
</span><a href="GHC.Types.Id.Info.html#demandInfo"><span class="hs-identifier hs-var hs-var">demandInfo</span></a></span><span>     </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808289"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-659"></span><span>
</span><span id="line-660"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapFragileInfo"><span class="hs-identifier hs-type">zapFragileInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-661"></span><span class="hs-comment">-- ^ Zap info that depends on free variables</span><span>
</span><span id="line-662"></span><span id="zapFragileInfo"><span class="annot"><span class="annottext">zapFragileInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapFragileInfo"><span class="hs-identifier hs-var hs-var">zapFragileInfo</span></a></span></span><span> </span><span id="local-6989586621680808286"><span class="annot"><span class="annottext">info :: IdInfo
</span><a href="#local-6989586621680808286"><span class="hs-identifier hs-var">info</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">occInfo :: IdInfo -&gt; OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var">occInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680808285"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808285"><span class="hs-identifier hs-var">occ</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">unfoldingInfo :: IdInfo -&gt; Unfolding
</span><a href="GHC.Types.Id.Info.html#unfoldingInfo"><span class="hs-identifier hs-var">unfoldingInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680808284"><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808284"><span class="hs-identifier hs-var">unf</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-663"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808283"><span class="hs-identifier hs-var">new_unf</span></a></span><span> </span><span class="annot"><span class="annottext">Unfolding -&gt; Maybe IdInfo -&gt; Maybe IdInfo
</span><span class="hs-operator hs-var">`seq`</span></span><span>  </span><span class="hs-comment">-- The unfolding field is not (currently) strict, so we</span><span>
</span><span id="line-664"></span><span>                   </span><span class="hs-comment">-- force it here to avoid a (zapFragileUnfolding unf) thunk</span><span>
</span><span id="line-665"></span><span>                   </span><span class="hs-comment">-- which might leak space</span><span>
</span><span id="line-666"></span><span>    </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808286"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; RuleInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setRuleInfo"><span class="hs-operator hs-var">`setRuleInfo`</span></a></span><span> </span><span class="annot"><span class="annottext">RuleInfo
</span><a href="GHC.Types.Id.Info.html#emptyRuleInfo"><span class="hs-identifier hs-var">emptyRuleInfo</span></a></span><span>
</span><span id="line-667"></span><span>               </span><span class="annot"><span class="annottext">IdInfo -&gt; Unfolding -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setUnfoldingInfo"><span class="hs-operator hs-var">`setUnfoldingInfo`</span></a></span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808283"><span class="hs-identifier hs-var">new_unf</span></a></span><span>
</span><span id="line-668"></span><span>               </span><span class="annot"><span class="annottext">IdInfo -&gt; OccInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setOccInfo"><span class="hs-operator hs-var">`setOccInfo`</span></a></span><span>       </span><span class="annot"><span class="annottext">OccInfo -&gt; OccInfo
</span><a href="GHC.Types.Basic.html#zapFragileOcc"><span class="hs-identifier hs-var">zapFragileOcc</span></a></span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808285"><span class="hs-identifier hs-var">occ</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-669"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-670"></span><span>    </span><span id="local-6989586621680808283"><span class="annot"><span class="annottext">new_unf :: Unfolding
</span><a href="#local-6989586621680808283"><span class="hs-identifier hs-var hs-var">new_unf</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding -&gt; Unfolding
</span><a href="GHC.Types.Id.Info.html#zapFragileUnfolding"><span class="hs-identifier hs-var">zapFragileUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808284"><span class="hs-identifier hs-var">unf</span></a></span><span>
</span><span id="line-671"></span><span>
</span><span id="line-672"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapFragileUnfolding"><span class="hs-identifier hs-type">zapFragileUnfolding</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span>
</span><span id="line-673"></span><span id="zapFragileUnfolding"><span class="annot"><span class="annottext">zapFragileUnfolding :: Unfolding -&gt; Unfolding
</span><a href="GHC.Types.Id.Info.html#zapFragileUnfolding"><span class="hs-identifier hs-var hs-var">zapFragileUnfolding</span></a></span></span><span> </span><span id="local-6989586621680808280"><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808280"><span class="hs-identifier hs-var">unf</span></a></span></span><span>
</span><span id="line-674"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Unfolding -&gt; Bool
</span><a href="GHC.Core.html#hasCoreUnfolding"><span class="hs-identifier hs-var">hasCoreUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808280"><span class="hs-identifier hs-var">unf</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="GHC.Core.html#noUnfolding"><span class="hs-identifier hs-var">noUnfolding</span></a></span><span>
</span><span id="line-675"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808280"><span class="hs-identifier hs-var">unf</span></a></span><span>
</span><span id="line-676"></span><span>
</span><span id="line-677"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapUnfolding"><span class="hs-identifier hs-type">zapUnfolding</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span>
</span><span id="line-678"></span><span class="hs-comment">-- Squash all unfolding info, preserving only evaluated-ness</span><span>
</span><span id="line-679"></span><span id="zapUnfolding"><span class="annot"><span class="annottext">zapUnfolding :: Unfolding -&gt; Unfolding
</span><a href="GHC.Types.Id.Info.html#zapUnfolding"><span class="hs-identifier hs-var hs-var">zapUnfolding</span></a></span></span><span> </span><span id="local-6989586621680808279"><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808279"><span class="hs-identifier hs-var">unf</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Unfolding -&gt; Bool
</span><a href="GHC.Core.html#isEvaldUnfolding"><span class="hs-identifier hs-var">isEvaldUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="#local-6989586621680808279"><span class="hs-identifier hs-var">unf</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="GHC.Core.html#evaldUnfolding"><span class="hs-identifier hs-var">evaldUnfolding</span></a></span><span>
</span><span id="line-680"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="GHC.Core.html#noUnfolding"><span class="hs-identifier hs-var">noUnfolding</span></a></span><span>
</span><span id="line-681"></span><span>
</span><span id="line-682"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapTailCallInfo"><span class="hs-identifier hs-type">zapTailCallInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-683"></span><span id="zapTailCallInfo"><span class="annot"><span class="annottext">zapTailCallInfo :: IdInfo -&gt; Maybe IdInfo
</span><a href="GHC.Types.Id.Info.html#zapTailCallInfo"><span class="hs-identifier hs-var hs-var">zapTailCallInfo</span></a></span></span><span> </span><span id="local-6989586621680808276"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808276"><span class="hs-identifier hs-var">info</span></a></span></span><span>
</span><span id="line-684"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var hs-var">occInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808276"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-685"></span><span>      </span><span id="local-6989586621680808275"><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808275"><span class="hs-identifier hs-var">occ</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">OccInfo -&gt; Bool
</span><a href="GHC.Types.Basic.html#isAlwaysTailCalled"><span class="hs-identifier hs-var">isAlwaysTailCalled</span></a></span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808275"><span class="hs-identifier hs-var">occ</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Maybe IdInfo
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808276"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; OccInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setOccInfo"><span class="hs-operator hs-var">`setOccInfo`</span></a></span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808274"><span class="hs-identifier hs-var">safe_occ</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-686"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe IdInfo
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-687"></span><span>        </span><span class="hs-keyword">where</span><span>
</span><span id="line-688"></span><span>          </span><span id="local-6989586621680808274"><span class="annot"><span class="annottext">safe_occ :: OccInfo
</span><a href="#local-6989586621680808274"><span class="hs-identifier hs-var hs-var">safe_occ</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccInfo
</span><a href="#local-6989586621680808275"><span class="hs-identifier hs-var">occ</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">occ_tail :: TailCallInfo
</span><a href="GHC.Types.Basic.html#occ_tail"><span class="hs-identifier hs-var">occ_tail</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TailCallInfo
</span><a href="GHC.Types.Basic.html#NoTailCallInfo"><span class="hs-identifier hs-var">NoTailCallInfo</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-689"></span><span>
</span><span id="line-690"></span><span class="annot"><a href="GHC.Types.Id.Info.html#zapCallArityInfo"><span class="hs-identifier hs-type">zapCallArityInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-691"></span><span id="zapCallArityInfo"><span class="annot"><span class="annottext">zapCallArityInfo :: IdInfo -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#zapCallArityInfo"><span class="hs-identifier hs-var hs-var">zapCallArityInfo</span></a></span></span><span> </span><span id="local-6989586621680808273"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808273"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Int -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setCallArityInfo"><span class="hs-identifier hs-var">setCallArityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808273"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-692"></span><span>
</span><span id="line-693"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{TickBoxOp}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-700"></span><span>
</span><span id="line-701"></span><span class="hs-keyword">type</span><span> </span><span id="TickBoxId"><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxId"><span class="hs-identifier hs-var">TickBoxId</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-702"></span><span>
</span><span id="line-703"></span><span class="hs-comment">-- | Tick box for Hpc-style coverage</span><span>
</span><span id="line-704"></span><span class="hs-keyword">data</span><span> </span><span id="TickBoxOp"><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxOp"><span class="hs-identifier hs-var">TickBoxOp</span></a></span></span><span>
</span><span id="line-705"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span id="TickBox"><span class="annot"><a href="GHC.Types.Id.Info.html#TickBox"><span class="hs-identifier hs-var">TickBox</span></a></span></span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxId"><span class="hs-identifier hs-type">TickBoxId</span></a></span><span>
</span><span id="line-706"></span><span>
</span><span id="line-707"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680808269"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBoxOp"><span class="hs-identifier hs-type">TickBoxOp</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-708"></span><span>    </span><span id="local-6989586621680808262"><span class="annot"><span class="annottext">ppr :: TickBoxOp -&gt; SDoc
</span><a href="#local-6989586621680808262"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#TickBox"><span class="hs-identifier hs-type">TickBox</span></a></span><span> </span><span id="local-6989586621680808261"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680808261"><span class="hs-identifier hs-var">mod</span></a></span></span><span> </span><span id="local-6989586621680808260"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808260"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;tick&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(Module, Int) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680808261"><span class="hs-identifier hs-var">mod</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680808260"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-709"></span><span>
</span><span id="line-710"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   Levity
*                                                                      *
************************************************************************

Note [Levity info]
~~~~~~~~~~~~~~~~~~

Ids store whether or not they can be levity-polymorphic at any amount
of saturation. This is helpful in optimizing the levity-polymorphism check
done in the desugarer, where we can usually learn that something is not
levity-polymorphic without actually figuring out its type. See
isExprLevPoly in GHC.Core.Utils for where this info is used. Storing
this is required to prevent perf/compiler/T5631 from blowing up.

-}</span><span>
</span><span id="line-728"></span><span>
</span><span id="line-729"></span><span class="hs-comment">-- See Note [Levity info]</span><span>
</span><span id="line-730"></span><span class="hs-keyword">data</span><span> </span><span id="LevityInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#LevityInfo"><span class="hs-identifier hs-var">LevityInfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="NoLevityInfo"><span class="annot"><a href="GHC.Types.Id.Info.html#NoLevityInfo"><span class="hs-identifier hs-var">NoLevityInfo</span></a></span></span><span>  </span><span class="hs-comment">-- always safe</span><span>
</span><span id="line-731"></span><span>                </span><span class="hs-glyph">|</span><span> </span><span id="NeverLevityPolymorphic"><span class="annot"><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span></span><span>
</span><span id="line-732"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621680808255"><span id="local-6989586621680808257"><span class="annot"><span class="annottext">LevityInfo -&gt; LevityInfo -&gt; Bool
(LevityInfo -&gt; LevityInfo -&gt; Bool)
-&gt; (LevityInfo -&gt; LevityInfo -&gt; Bool) -&gt; Eq LevityInfo
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: LevityInfo -&gt; LevityInfo -&gt; Bool
$c/= :: LevityInfo -&gt; LevityInfo -&gt; Bool
== :: LevityInfo -&gt; LevityInfo -&gt; Bool
$c== :: LevityInfo -&gt; LevityInfo -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span>
</span><span id="line-733"></span><span>
</span><span id="line-734"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680808252"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#LevityInfo"><span class="hs-identifier hs-type">LevityInfo</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-735"></span><span>  </span><span id="local-6989586621680808251"><span class="annot"><span class="annottext">ppr :: LevityInfo -&gt; SDoc
</span><a href="#local-6989586621680808251"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NoLevityInfo"><span class="hs-identifier hs-var">NoLevityInfo</span></a></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;NoLevityInfo&quot;</span></span><span>
</span><span id="line-736"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;NeverLevityPolymorphic&quot;</span></span><span>
</span><span id="line-737"></span><span>
</span><span id="line-738"></span><span class="hs-comment">-- | Marks an IdInfo describing an Id that is never levity polymorphic (even when</span><span>
</span><span id="line-739"></span><span class="hs-comment">-- applied). The Type is only there for checking that it's really never levity</span><span>
</span><span id="line-740"></span><span class="hs-comment">-- polymorphic</span><span>
</span><span id="line-741"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setNeverLevPoly"><span class="hs-identifier hs-type">setNeverLevPoly</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html#HasDebugCallStack"><span class="hs-identifier hs-type">HasDebugCallStack</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-742"></span><span id="setNeverLevPoly"><span class="annot"><span class="annottext">setNeverLevPoly :: HasDebugCallStack =&gt; IdInfo -&gt; Type -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setNeverLevPoly"><span class="hs-identifier hs-var hs-var">setNeverLevPoly</span></a></span></span><span> </span><span id="local-6989586621680808245"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808245"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808244"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680808244"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-743"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">not</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">resultIsLevPoly</span><span> </span><span class="hs-identifier">ty</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">ty</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-744"></span><span>    </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808245"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LevityInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetLevityInfo"><span class="hs-identifier hs-var">bitfieldSetLevityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808245"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-745"></span><span>
</span><span id="line-746"></span><span class="annot"><a href="GHC.Types.Id.Info.html#setLevityInfoWithType"><span class="hs-identifier hs-type">setLevityInfoWithType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span>
</span><span id="line-747"></span><span id="setLevityInfoWithType"><span class="annot"><span class="annottext">setLevityInfoWithType :: IdInfo -&gt; Type -&gt; IdInfo
</span><a href="GHC.Types.Id.Info.html#setLevityInfoWithType"><span class="hs-identifier hs-var hs-var">setLevityInfoWithType</span></a></span></span><span> </span><span id="local-6989586621680808241"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808241"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621680808240"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680808240"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-748"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; Bool
</span><a href="GHC.Core.Type.html#resultIsLevPoly"><span class="hs-identifier hs-var">resultIsLevPoly</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680808240"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-749"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808241"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">bitfield :: BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var">bitfield</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LevityInfo -&gt; BitField -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfieldSetLevityInfo"><span class="hs-identifier hs-var">bitfieldSetLevityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; BitField
</span><a href="GHC.Types.Id.Info.html#bitfield"><span class="hs-identifier hs-var hs-var">bitfield</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808241"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-750"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-751"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808241"><span class="hs-identifier hs-var">info</span></a></span><span>
</span><span id="line-752"></span><span>
</span><span id="line-753"></span><span class="annot"><a href="GHC.Types.Id.Info.html#isNeverLevPolyIdInfo"><span class="hs-identifier hs-type">isNeverLevPolyIdInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-754"></span><span id="isNeverLevPolyIdInfo"><span class="annot"><span class="annottext">isNeverLevPolyIdInfo :: IdInfo -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#isNeverLevPolyIdInfo"><span class="hs-identifier hs-var hs-var">isNeverLevPolyIdInfo</span></a></span></span><span> </span><span id="local-6989586621680808239"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808239"><span class="hs-identifier hs-var">info</span></a></span></span><span>
</span><span id="line-755"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">LevityInfo
</span><a href="GHC.Types.Id.Info.html#NeverLevityPolymorphic"><span class="hs-identifier hs-var">NeverLevityPolymorphic</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; LevityInfo
</span><a href="GHC.Types.Id.Info.html#levityInfo"><span class="hs-identifier hs-var">levityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680808239"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-756"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-757"></span></pre></body></html>